home *** CD-ROM | disk | FTP | other *** search
/ Chaos CD Blue / Chaos_CD_Blue__[1999].iso / contrib / cryptron / other_formats / DIPLOM.txt < prev    next >
Text File  |  1999-11-21  |  85KB  |  2,849 lines

  1.  
  2.  
  3. Diplomarbeit
  4.  
  5. "Realisierung einer Verschlⁿsselungstechnik fⁿr Daten im ISDN B-Kanal"
  6.  
  7.  
  8.  
  9. Inhaltsverzeichnis
  10.  
  11.  
  12.  
  13. 1 Einleitung    
  14.  
  15. 2 Motivation und Zielsetzung    
  16.  
  17. 3 Stand der Technik    
  18.  
  19. 3.1 Was schon an Vergleichbarem existiert    
  20.  
  21. 3.2 ISDN-Basisanschlu▀    
  22.  
  23. 3.2.1 ISDN S0-Bus    
  24.  
  25. 3.2.2 ISDN D-Kanal    
  26.  
  27. 3.2.3 ISDN B-Kanal    
  28.  
  29. 3.3 Verschlⁿsselungsalgorithmen    
  30.  
  31. 3.3.1 Blockchiffrierer    
  32.  
  33. 3.3.2 Stromchiffrierer    
  34.  
  35. 3.3.3 Asymmetrischer RSA Algorithmus    
  36.  
  37. 3.3.4 Diffie Hellman Schlⁿsselaustausch    
  38.  
  39. 3.3.5 "Oneway" Algorithmen    
  40.  
  41. 3.4 Bausteine fⁿr dieses Projekt    
  42.  
  43. 3.4.1 ISDN-Bausteine    
  44.  
  45. 3.4.2 Prozessoren fⁿr die Verschlⁿsselung    
  46.  
  47. 4 Grobkonzept    
  48.  
  49. 4.1 Verschlⁿsselungsalgorithmus fⁿr den Datenstrom    
  50.  
  51. 4.2 Blockschaltplan    
  52.  
  53. 5 Feinkonzept    
  54.  
  55. 5.1 Die Chipkarte    
  56.  
  57. 5.2 Der Steuerprozessor mit Speicher    
  58.  
  59. 5.3 Der Steuerprozessor mit Peripherie    
  60.  
  61. 5.4 Die ISDN-Hardware    
  62.  
  63. 5.5 Die Ver- und Entschlⁿsselungs-DSPs    
  64.  
  65. 6 Zusammenfassung    
  66.  
  67. 6.1 Bewertung    
  68.  
  69. 6.2 Ausblicke    
  70.  
  71. 7 Anhang    
  72.  
  73. 7.1 Abbildungsverzeichnis    
  74.  
  75. 7.2 Index    
  76.  
  77. 7.3 Glossar    
  78.  
  79. 7.4 Liste der Signalnamen    
  80.  
  81. 7.5 Pinbelegung der Steckverbinder    
  82.  
  83. 7.6 Stⁿcklisten    
  84.  
  85. 7.6.1 Stⁿckliste ISDN-Telefon-Board    
  86.  
  87. 7.6.2 Stⁿckliste ISDN-DSP-Verschlⁿsselungsboard    
  88.  
  89. 7.6.3 Stⁿckliste der externen Bauteile    
  90.  
  91. 7.7 Inhalt der Daten-CD    
  92.  
  93. 7.8 Literaturverzeichnis    
  94.  
  95. 7.9 DSP-Listing    
  96.  
  97. 7.10 StromlaufplΣne    
  98.  
  99. 7.11 BestⁿckungsplΣne    
  100.  
  101. 7.12 Layouts    
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111. 1 Einleitung
  112.  
  113. In diesem Kapitel wird der Aufbau der vorliegenden Diplomarbeit erklΣrt. Die Arbeit besteht aus 6 Kapiteln plus Anhang. Die Einleitung, das erste Kapitel, lesen Sie gerade. Im zweiten Kapitel wird die Motivation und Zielstellung beschrieben. Warum wird das beschriebene GerΣt gebraucht und welche Eigenschaften soll es erfⁿllen. Das dritte Kapitel befa▀t sich mit dem Stand der Technik und dem technischen Umfeld. Wie ist der ISDN-Basisanschlu▀ aufgebaut und welche Eigenschaften des ISDN-Netzes sind fⁿr diese Arbeit interressant? Und es werden die Grundlagen der Kryptographie betrachtet. Zudem wird in diesem Kapitel die Auswahl der relevanten Bauelemente fⁿr das Projekt getroffen. Im vierten Kapitel wird der Kryptoalgorithmus, der fⁿr dieses Projekt ausgewΣhlt worden ist, beschrieben. Es wird ein ▄berblick ⁿber die gesamte Hardware des Verschlⁿsselungstelefons gegeben. Das fⁿnfte Kapitel geht dann ins Detail. Die Hardwarekomponenten und auch die Implementierung der Kroyptoalgorithmen werden dort nΣher beschrieben. Als letztes Kapitel folgt eine abschlie▀ende Zusammenfassung der Arbeit und eine eigene Bewertung. Es wird auch beschrieben, was und wie dieses GerΣt noch verbessert und weiterentwickelt werden kann.
  114.  
  115. Im Anhang befinden sich Tabellen und Diagramme, Literatur- und Abbildungsverzeichnisse, Listen der Signalnamen und deren Bedeutung, die Pinbelegung der Steckleisten, eine Stⁿckliste der eingesetzten Bauelemente und einiges mehr. Zudem enthΣlt der Anhang die StromlaufplΣne, Layouts und BestⁿckungsplΣne. Dieser Diplomarbeit ist zudem eine Daten-CD beigelegt, deren Inhaltsangabe ebenfalls dem Anhang zu entnehmen ist.
  116.  
  117.  
  118.  
  119.  
  120.  
  121. 2 Motivation und Zielsetzung
  122.  
  123. In dieser Diplomarbeit wird der Aufbau eines Sprachverschlⁿsselungssystems behandelt, das am ISDN-Basisanschlu▀ betrieben werden kann. Es gewΣhrleistet weitgehen die Geheimhaltung der Kommunikation zwischen zwei GesprΣchspartnern. Die PrivatsphΣre wird zur Zeit immer mehr gest÷rt oder eingeschrΣnkt. Angefangen von Hackern, die aus Spa▀ an der Sache fremde Leitungen anzapfen und mith÷ren, ⁿber professionellen Datendiebstahl, z.B. Industriespionage, bis hin zu staatlichen Ma▀nahmen wie "Der gro▀e Lauschangriff" reicht die Palette der Angriffe. Man sollte sich seine PrivatsspΣre sichern und sich nicht zum "glΣsernen Menschen" machen lassen.
  124.  
  125. Ziel ist es, ein GerΣt zu entwickeln, das die zu ⁿbertragenden Informationen zwischen den EndgerΣten so unkenntlich fⁿr Dritte macht, da▀ nur die beiden GesprΣchspartner ihre Nachrichten verstehen k÷nnen. Die Daten, die ⁿber den hausinternen ISDN-S0-Bus, den UK0-Leitungen zu den Vermittlungsstellen und durch die Vermittlungsstellen gehen, werden verschlⁿsselt und k÷nnen nur mit dem entsprechenden Code wieder entschlⁿsselt werden.
  126.  
  127. Der Grund, da▀ fⁿr dieses Projekt das ISDN-Netz und nicht das analoge Telefonnetz genutzt wird, besteht darin, da▀ bei ISDN die Sprachdaten schon in digitaler Form vorliegen und nicht erst komprimiert und auf die analogen Leitungen aufmoduliert werden mⁿssen.
  128.  
  129. Es soll also ein komplettes ISDN-EndgerΣt, entsprechend der FunktionalitΣt eines Telefons, aufgebaut werden, das noch zusΣtzlich die Nutzdaten im jeweiligen B-Kanal ver- und entschlⁿsselt. Die verwendbaren Verschlⁿsselungsalgorithmen sollten einen hohen Sicherheitsstandard aufweisen. In der heutigen Zeit ist es m÷glich, mit entsprechendem matriellen Einsatz, wie ihn sich einige gr÷▀ere Organisationen oder staatliche Beh÷rden leisten k÷nnen, einfachere Codierungen zu entschlⁿsseln. Der Schlⁿssel sollte, wie bei einem realen Schlo▀, entfernbar und austauschbar sein. Dafⁿr wird in dieser Arbeit, Σhnlich einer Telefonkarte, eine Chipkarte eingesetzt, die den Schlⁿssel enthΣlt. Besser wΣhren Karten, die sowohl den Schlⁿssel, als auch einen Teil des Algorithmuses unterbringen, wie z.B. die NetKeyCard von Telesec.
  130.  
  131. Fⁿr ein ISDN-EndgerΣt mu▀ das D-Kanal Protokoll (Siehe Seite 10) auf einem Steuerprozessor implementiert werden. Dieses D-Kanal Protokoll ist nicht Teil der Diplomarbeit, sondern wird in einer getrennten Arbeit behandelt.
  132.  
  133. Hier geht es vielmehr um die gesamte Hardware und die Verschlⁿsselungsalgorithmen. Es soll der Aufbau eines ISDN-Telefons mit Verschlⁿsselungsfunktion gezeigt werden. Softwareseitig wird auf Ver- und Entschlⁿsselung von Datenstr÷men eingegangen.
  134.  
  135. Eine besondere Anforderung an die Hardware ist, da▀ sie aus Bauteilen besteht, die leicht im Elektronikhandel erhΣltlich sind. Denn diese Schaltung soll von jedermann leicht nachbaubar sein. Es sollen also keine exotischen Spezialbauteile und keine Chips, die mit speziellen ProgrammiergerΣten gebrannt werden mⁿssen, eingesetzt werden. Die Leiterplatte(n) sollen maximal zweiseitig sein, damit sie noch relativ einfach zu fertigen sind. Auch dⁿrfen die verwendeten Bauteile nicht ein zu kleines Pinraster haben, damit sie auch von jedem leicht zu verl÷ten sind. Also kommen erstmal nur DIL und PLCC GehΣuse in Frage. 
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143. 3 Stand der Technik
  144.  
  145. Hier wird die Basis fⁿr dieses Projekt beschrieben. Als erstes, was es schon an vergleichbaren GerΣten gibt und was sonst noch so geplant ist. Als zweites, fⁿr die Arbeit alle wesentlichen Fakten ⁿber den ISDN-Basisanschlu▀. Als letztes noch, welche Halbleiter fⁿr dieses GerΣt in Frage kommen.
  146.  
  147. 3.1 Was schon an Vergleichbarem existiert
  148.  
  149. Es existieren schon Einrichtungen, mit denen verschlⁿsselt auf dem ISDN-Netz telefoniert werden kann. Die meistgenutzte Variante ist der Einsatz eines Personalcomputers mit einer ISDN-Karte und einer Soundkarte. Die ISDN-Karte im PC arbeitet mit einem hardwarespezifischen CAPI-Treiber zusammen. Dieser CAPI-Treiber ⁿbernimmt alle Hardwarefunktionen der Karte und auch die gesamte Verwaltung des D-Kanals. Nun gibt es Programme, meist unter Windows, die mit Hilfe einer Soundkarte ein ISDN-Telefon simulieren. Ein Kopfh÷rer mit Mikrophon wird an die Soundkarte angeschlossen und damit ein Telefonh÷rer geschaffen. Auf einem Fenster der graphischen OberflΣche werden dann Tastenfeld und Display dargestellt. Nun kann noch bei einigen Programmen eine Verschlⁿsselungsfunktion aktiviert werden, um GesprΣche mit einer gewissen Geheimhaltung zu fⁿhren. Die Ver- und Entschlⁿsselung wird dann vom Hauptprozessor des PC durchgefⁿhrt. Der Sinn dieser Variante ist, wenn schon ein PC mit ISDN und Soundkarte zur Verfⁿgung steht, da▀ nur noch diese Software installiert werden mu▀, um verschlⁿsselt auf dem ISDN-Netz telefonieren zu k÷nnen. Der Nachteil ist aber, da▀ fⁿr jedes TelefongesprΣch extra der PC mit Windows hochgefahren werden mu▀. Desweiteren ist ein kompletter PC nur zum Telefonieren z.zt. noch sehr aufwendig. Besser wΣre ein GerΣt wie ein normales Telefon, das eine Verschlⁿsselungsfunktion schon mit eingebaut hat.
  150.  
  151. Die Firma Siemens baut unter dem Namen "DSM ISDN" ein solches GerΣt, aber nΣhere Informationen sind derzeit nicht erhΣltlich. Das Verschlⁿsselungstelefon ist nicht fⁿr die Allgemeinheit bestimmt. Auch von der Telekom (Telesec) werden in einiger Zeit verschiedene Dienste gegen das illegale Abh÷ren von Fernmeldeleitungen angeboten, die jedoch nicht generell vor  einem Abh÷ren schⁿtzen.
  152.  
  153. Fⁿr das analoge Telefonnetz hat der Chaos-Computer-Club schon ein "Crypto-Phone" entwickelt. Es benutzt ein Modem zur Verbindung mit dem Telefonnetz und hat eine GSM-Σhnliche Sprachkompression. Hauptbestandteil ist ein leistungsstarker DSP. Das Projekt ist neu, und es sind nur wenige Informationen zu bekommen.
  154.  
  155.  
  156.  
  157. 3.2 ISDN-Basisanschlu▀
  158.  
  159. Jeder normale Telefonanschlu▀ kann, auf Antrag, in einen ISDN-Basisanschlu▀ umgewandelt werden, wenn eine Angliederung an eine digitale Vermittlungsstelle zur Verfⁿgung steht. Ob ein Anschlu▀ an einer digitalen Vermittlungsstelle vorhanden ist, kann ganz einfach festgestellt werden durch den Versuch, mit Ton-Wahl (DTMF) zu wΣhlen. Ist nur der Puls-Wahl-Modus m÷glich, dann ist man noch an einer alten analogen Vermittlungsstelle angeschlossen, und es wird etwas lΣnger dauern, bis der ISDN-Anschlu▀ geschaltet wird. Ein ISDN-Anschlu▀ ist z.zt. teurer als ein normaler Telefonanschlu▀, er hat aber auch einige Vorteile. Einer der zwei wichtigsten ist, da▀ auf einem einzigen Leitungspaar, der UK0-Leitung, gleichzeitig zwei Kommunikatiosverbindungen nach drau▀en gefⁿhrt werden k÷nnen, was z.B. eine Dreierkonferenz erm÷glicht, weiterhin Sprechen und Faxen gleichzeitig, Angerufenwerden wΣhrend telefoniert wird und vieles mehr [2]. Der andere gro▀e Vorteil ist die viel h÷here ▄bertragungsrate von Daten. Das schnellste verfⁿgbare Modem kann auf einer normalen Telefonleitung 33,6kBit/s (spezielle Modems 56,7kBit/s) ⁿbertragen. ISDN kann 64kBit/s, oder wenn beide KanΣle benutzt werden, sogar 128kBit/s (kostet aber auch doppelt Gebⁿhren). Bei ISDN-Anschlu▀verlegung wird von der Telekom ein NTBA an die Leitung angeschlossen, an der sich zuvor das analoge Telefon befunden hat (Abbildung 1). Damit wird die Leitung zur Vermittlungsstelle zur Uk0-Schnittstelle, an der natⁿrlich kein analoges Telefon mehr angeschlossen werden darf, da sich die elektrischen Eigenschaften geΣndert haben.
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  Abbildung 1: ISDN-Basisanschlu▀
  166.  
  167. 3.2.1 ISDN S0-Bus
  168.  
  169. An dem NTBA steht der S0-Bus zur Verfⁿgung. Dort k÷nnen nun die ISDN-EndgerΣte (Telefon, ISDN-Karte, u.s.w.) oder eine ISDN-Telefonanlage angeschlossen werden (Abbildung 1). An diesem Bus k÷nnen max. acht GerΣte betrieben werden, die mit maximal zehn Meter langen Stichleitungen am Bus angeschlossen werden. Der gesamte S0-Bus darf 150 Meter bei MehrgerΣteanschlu▀ oder 1000 Meter bei einem einzigen angeschlossenen GerΣt lang sein. Dieser S0-Bus ist vieradrig, davon sind zwei Adern fⁿr den Transport der Daten vom EndgerΣt (TE) zum Netzabschlu▀adapter (NTBA oder NT) belegt und zwei fⁿr die Daten vom NT zum TE. Eine Stromversorgung fⁿr die EndgerΣte wird zusΣtzlich mit auf dem S0-Bus zur Verfⁿgung gestellt (Abbildung 2). Es handelt sich hierbei um eine Spannung von 40V zwischen den Leitungspaaren a1-b1 und a2-b2, die mit max 100mA belastet werden darf. Die Signale werden mittels eines ▄bertragers in den ISDN-GerΣten aus den Leitungspaaren ausgekoppelt.
  170.  
  171.  
  172.  
  173.  
  174.  
  175. Abbildung 2: ISDN Western-Stecker
  176.  
  177.  
  178.  
  179. Beim S0-Bus reprΣsentiert der Netzabschlu▀adapter (NTBA oder NT) die Vermittlungsstelle, weil vom NTBA die Uk0-Leitung zur Vermittelungsstelle geht. Der S0-Bus sieht nur den NTBA und hat eine ▄bertragungsrate von 144 kBit/s netto pro Richtung. Das sind 2 B-KanΣle mit je 64 kBit/s und ein D-Kanal mit 16 kBit/s. Es gibt zudem noch Synchronisations- und Steuerbits (Abbildung 3) auf dem Bus, die hier nicht weiter betrachtet werden, da sie fⁿr die Verschlⁿsselung der NutzdatenkanΣle nicht weiter wichtig sind und diese Bits schon automatisch in allen am Markt verfⁿgbaren ISDN-Chip abgearbeitet werden. Fⁿr die Verschlⁿsselung sind eigentlich nur die NutzdatenkanΣle, die B-KanΣle, interessant.
  180.  
  181.  
  182.  
  183.  
  184.  
  185. Abbildung 3: Signale auf dem ISDN S0-Bus
  186.  
  187.  
  188.  
  189. 3.2.2 ISDN D-Kanal
  190.  
  191. In diesem Signalisierungskanal, der wichtigsten Einheit im ISDN-System, werden sΣmtliche Steuerfunktionen ⁿbertragen. Die ganze Organisation wie z.B. Verbindungsauf- und -abbau, ankommender Ruf (Klingel), gewΣhlte Ziffern, Rufnummer des GesprΣchspartners, Gebⁿhreninformationen und vieles mehr wird auf dem D-Kanal ⁿbertragen. Als wichtig sei hier erwΣhnt, da▀ im D-Kanal anzugeben ist, welcher Art die Nutzdaten auf den B-KanΣlen sind (Sprache oder Daten). Das ist insofern fⁿr die vorliegende Diplomarbeit wichtig, da ein Telefon "restricted" Sprechdaten anmeldet, aber diese nach dem Verschlⁿsseln nur noch "unrestricted" BinΣrdaten sind.
  192.  
  193.  
  194.  
  195.  
  196.  
  197. Abbildung 4: D-Kanal Schichtenmodel
  198.  
  199. Das sehr komplexe ISDN-D-Kanal Protokoll ist in 3 Schichten (Abbildung 4) aufgeteilt. Die erste Schicht ist die Hardware- und Bitⁿbertragungsschicht. Die Richtlinien fⁿr die Schicht 1 des D-Kanals sind in der ITU-T I.430 / I.431 Norm festgelegt. Beim S0-Bus ist eine 0 dominant und die 1 rezessiv. Diese Festlegung ist wichtig, da an dem Bus bis zu 8 GerΣte gleichzeitig angeschlossen sein k÷nnen, die  ein D-Kanal Paket senden wollen. Daher gibt es eine Kollisionserkennung, die dem GerΣt mit der niedrigeren PrioritΣt veranla▀t, die Sendung einzustellen. Da die D-Kanal Informationen bitweise ⁿbertragen werden, mu▀ eine Bytesynchronisation stattfinden. Diese besteht aus der Bitfolge "01111110" und wird immer am Anfang und Ende eines D-Kanal Pakets ⁿbertragen. Damit es keine Verwechslungen mit Daten gibt, die auch zufΣllig sechs oder mehr Einsen hintereinander haben, wird nach dem "Bitstuffing" Algorithmus immer nach fⁿnf aufeinanderfolgenden Einsen vom Sender eine Null eingefⁿgt, die vom EmpfΣnger wieder entfernt wird. Damit ist sichergestellt, da▀ die Bitfolge "01111110" nur fⁿr die Bytesychronisation zustΣndig ist, und acht oder mehr Einsen kennzeichnen einen freien D-Kanal. Bei der Bitfolge "011111110" wird ein Rahmenabbruch durchgefⁿhrt. Dieses Verfahren stammt aus dem HDLC-Protokoll, welches fⁿr X.25 eingesetzt wird.
  200.  
  201. In der zweiten Schicht liegt die Aufgabe der Fehlererkennung und -behandlung sowie die Adressierung der Pakete auf dem D-Kanal, damit diese das richtige GerΣt erreichen. Die ITU-T Norm fⁿr Schicht 2 ist Q.920 / Q.921.
  202.  
  203. Die dritte Schicht enthΣlt nun die eigentlichen Signalisierungsdaten. Es gibt zur Zeit zwei Standards fⁿr diese Schicht, die von der Telekom in Deutschland eingesetzt werden. Die eine ist die alte nationale 1TR6 Norm, die von der Bundespost eingefⁿhrt wurde. Sie wird noch voraussichtlich bis ins Jahr 2003 von der Telekom unterstⁿtzt. Die andere ist die europaweit geltende Norm DSS1 ITU-T Q.930 / Q.932. Diese Norm ist die allgemein gⁿltige fⁿr einen zukⁿnftigen Basisanschlu▀. 
  204.  
  205.  
  206.  
  207. 3.2.3 ISDN B-Kanal
  208.  
  209. Sobald mit Hilfe des D-Kanals eine Verbindung zwischen zwei Partnern aufgebaut worden ist, werden die eigentlichen Nutzinformationen auf dem B-Kanal ⁿbertragen. Welcher der beiden B-KanΣle fⁿr diese Verbindung benutzt wird, wurde zuvor mit dem D-Kanal signalisiert.
  210.  
  211. Die Informationen auf dem B-Kanal werden byteweise ⁿbertragen, und im Rahmen dieser Arbeit entfΣllt die Bytesynchronisation. Es werden pro B-Kanal 64 KBit/s oder dementsprechend 8 KByte/s ⁿbertragen. Im B-Kanal gibt es keine weitere Schichtenaufteilung, da diese Bytes gleich von der Anwendungsschicht genutzt werden. Beim ISDN-Telefon sind diese Bytes zugleich die Werte fⁿr den A/D und D/A-Wandler. Die 8 Bits werden lediglich auf 14 Bit mit dem A-law Verfahren expandiert. Diese Bit-Expansion und Kompression ist in der IUT-T G.711 beschrieben. Durch ISDN-Karten werden die Bytes aus dem ISDN-Kanal direkt in den Computer ⁿbertragen und dort nach Bedarf weiterverarbeitet.
  212.  
  213. Fⁿr die Verschlⁿsselung der B-Kanal Daten ist folgendes zu beachten:
  214.  
  215. Der konstante Bytestrom von 8000 Byte/s kann fehlerhafte Bytes enthalten. Es mu▀ nun dafⁿr gesorgt werden, da▀ dieser Bytestrom beim Sender verschlⁿsselt und beim EmpfΣnger entschlⁿsselt wird und sich somit wieder die ursprⁿnglichen Daten ergeben, obwohl durchaus ein Byte wΣhrend der ▄bertragung gest÷rt werden kann. Welcher Art die eigentlichen Nutzdaten sind (Sprache, Fax oder Daten) ist unerheblich. Der Vermittlungsstelle mu▀ lediglich ⁿber dem D-Kanal mitgeteilt werden, da▀ "unrestricted" BinΣrdaten ⁿbertragen werden, damit diese nicht als Sprachdaten interpretiert werden und unter UmstΣnden z.B. durch GSM-Sprach-Compression oder analoge Leitungen einer Verfremdung unterliegen.
  216.  
  217.  
  218.  
  219. 3.3 Verschlⁿsselungsalgorithmen
  220.  
  221. Ver- und Entschlⁿsselungsalgorithmen sind besondere Rechenvorschriften mit zwei Eingangs- und einer Ausgangsvariablen [1]. Einer der Eingangswerte ist immer der Schlⁿssel (k). Fⁿr die Verschlⁿsselung (E) ist der andere Eingangswert der Klartext (m), und der Ausgangswert ist der Chiffretext (c). Beim Entschlⁿsseln (E-1) ist es umgekehrt, der Chiffretext (c) geht in den Algorithmus rein, und es kommt bzw. sollte herauskommen der Klartext (m), falls der Schlⁿssel (k) stimmt. Das besondere an diesen Algorithmen ist folgendes: Es dⁿrfen keinerlei Rⁿckschlⁿsse auf den Schlⁿssel (k) bzw. den Inhalt des Klartextes (m) gezogen werden k÷nnen, wenn nur der Chiffretext (c) bekannt ist. Ebenfalls darf auch der Schlⁿssel (k) nicht mit der Kenntnis von Chiffre- und Klartextpaaren zurⁿckgerechnet werden k÷nnen. Die Sicherheit eines Verschlⁿsselungsalgorithmusses hΣngt von der LΣnge des Schlⁿssels (k) ab. Theoretisch ist es bei symmetrischen Algorithmen so, da▀ mit jedem Bit um das der Schlⁿssel (k) lΣnger wird, es doppelt so schwer wird, ihn durch durch Austesten offenzulegen. Es gibt nun mehrere Arten von Verschlⁿsselungsalgorithmen, die in zwei Klassen von Algorithmen aufgeteilt werden k÷nnen: 
  222.  
  223.     ( Symmetrische Verschlⁿsselungsalgorithmen
  224.  
  225.         Blockchiffrierer, Stromchiffrierer, Oneway-Algorithmen
  226.  
  227.     ( Asymetrische Verschlⁿsselungsalgorithmen
  228.  
  229.         RSA, Diffie Hellman Schlⁿsselaustausch
  230.  
  231. 3.3.1 Blockchiffrierer
  232.  
  233. Die Blockchiffrierer verschlⁿsseln einen Klartextblock mit konstanter Gr÷▀e, meist 64 Bit, zu einem Chiffretextblock mit gleicher Gr÷▀e, und beim Entschlⁿsseln entsprechend umgekehrt. Es wird beim Ver- und Endschlⁿsseln der gleiche Schlⁿssel (k) verwendet. Daher sind diese Algorithmen symmetrisch. Solche Algorithmen bestehen meist aus Iterationen von Bitpermutation, Shiften, XOR, Lookuptables und besonderen Multiplikationen. Die bekanntesten Algorithmen sind DES und IDEA.
  234.  
  235. 3.3.2 Stromchiffrierer
  236.  
  237. Diese Chiffrierer sind ebenfalls symmetrisch, aber es gibt keine konstante Gr÷▀e der Klar- und Chiffretextbl÷cke. Sie ver- und entschlⁿsseln Bit- oder Bytestr÷me. Je nach Art des Algorithmusses sind die Verschlⁿsselungsmuster nur vom Schlⁿssel (k) oder vom Schlⁿssel (k) zusΣtzlich des Datenstromes abhΣngig. Entweder handelt es sich bei ihnen um reine Stromchiffrierer wie RC4 oder A5-GSM, oder es werden Blockchiffrierer mit besonderen Rahmenalgorithmen eingesetzt und so zu Stromchiffrierern umfunktioniert.
  238.  
  239. 3.3.3 Asymmetrischer RSA Algorithmus
  240.  
  241. Besonders interessant sind die asymmetrischen Algorithmen, wie RSA, in denen fⁿr die Ver- und Entschlⁿsselung zwei verschiedene Schlⁿssel (kS, kP) eingesetzt werden. Der Schlⁿssel (kS) bleibt geheim, und der Schlⁿssel (kp) wird ver÷ffentlicht. Das hat den gro▀en Vorteil, da▀ jeder eine Nachricht mit dem ÷ffentlich verfⁿgbaren Schlⁿssel (kP) verschlⁿsseln kann, aber nur mit dem privaten Schlⁿssel (kS) diese Nachricht wieder entschlⁿsseln kann. Der Algorithmus hat die recht einfache aber doch sehr wirkungsvolle Formel: "c = mk MOD n" (m=Klartext, c=Chiffretext, n=Produkt zweier Primzahlen und zusammen mit k ein Teil des Schlⁿssels). Das Geheimnis liegt in der Auswahl der Zahlen kS, kP und n. Die Zahlen kS, kP und n mⁿssen sehr gro▀ (1024 Bit oder mehr) gewΣhlt werden, damit der Algorithmus sicher ist. Dieser Algorithmus eignet sich aber nicht, um direkt Daten zu verschlⁿsseln, sondern es mu▀ zusΣtzlich ein symmetrischer Algorithmus hinzugenommen werden, um die eigentlichen Datenstr÷me zu verschlⁿsseln (Hybritalgorithmus) (Abbildung 5). Genau das macht das sehr gute Programm PGP, das fⁿr die Verschlⁿsselung von eMails im Internet verwendet wird [5]. Es verwendet eine Kombination von RSA und IDEA.
  242.  
  243.  
  244.  
  245.  
  246.  
  247. Abbildung 5: Hybrid-Algorithmus mit RSA und IDEA (PGP)
  248.  
  249. 3.3.4 
  250.  
  251. Diffie Hellman Schlⁿsselaustausch
  252.  
  253. Noch eine elegante Art, den symmetrischen Schlⁿssel auszutauschen, ist der Diffie Hellman Schlⁿsselaustausch. Hier k÷nnen sich zwei Partner, die zuvor noch keine Daten ausgetauscht haben, in aller ╓ffentlichkeit auf einen geheimen Schlⁿssel fⁿr einen symmetrischen Algorithmus einigen, ohne das Dritte ihn erfahren. Genauso wie beim RSA basiert alles auf der Rechnung "c = mk MOD n", und es mⁿssen auch hier sehr gro▀e Zahlen (1024Bit oder mehr) gewΣhlt werden.
  254.  
  255.  
  256.  
  257. Partner A
  258.  
  259. ╓ffentlichkeit
  260.  
  261. Partner B
  262.  
  263.  
  264.  
  265.  
  266.  
  267. a ( N und a<p )
  268.  
  269. ( = sa mod p
  270.  
  271.  
  272.  
  273. k = (a mod p
  274.  
  275. p (Primezahl)
  276.  
  277. s ( N und s<p )
  278.  
  279.  
  280.  
  281.  
  282.  
  283. (, (
  284.  
  285.  
  286.  
  287.  
  288.  
  289. b ( N und b<p )
  290.  
  291. ( = sb mod p
  292.  
  293.  
  294.  
  295. k = (b mod p
  296.  
  297. Abbildung 6: Ablauf des Diffie Hellman Schlⁿsselaustauschs
  298.  
  299.  
  300.  
  301. Fⁿr den Schlⁿsselaustausch (Abbildung 6) einigen sich beide Partner in aller ╓ffentlichkeit auf eine Primzahl (p) und eine natⁿrliche Zahl (s) die kleiner als p ist. Jetzt sucht jeder Partner fⁿr sich je eine natⁿrliche Zahl (a, b) aus, die auch kleiner als p sein mu▀, und jeder errechnet sich damit eine Zahl ((, (), die sich die Partner in aller ╓ffentlichkeit austauschen. Die Zahlen a und b bleiben geheim. Nun kann sich jeder Partner die Zahl k errechnen. Ein Dritter, der die Zahlen p, s, ( und ( mitgeh÷rt hat, kann nicht die Zahl k berechnen, weil er weder die Zahl a noch die Zahl b kennt. Die beiden Partner k÷nnen aber die Zahl k nun als Basis fⁿr einen symmetrischen Algorithmus nutzen. Die gro▀e Gefahr bei diesem Schlⁿsselaustausch ist, da▀ sich ein Dritter die Leitung auftrennt und dann nach beiden Partnern hin getrennt je einen Schlⁿsselaustausch vornimmt. Beide Partner denken, sie hΣtten ein gemeinsamen geheimen Schlⁿssel k, aber dabei haben sie jeweils mit dem Angreifer den Schlⁿsselaustausch vorgenommen und sind auch im Besitz verschiedener Schlⁿssel k1 und k2. Dieses Verfahren erfordert es unbedingt, mit seinem Partner die Checksumme des Schlⁿssels k zu vergleichen, und zwar so, da▀ es der Angreifer nicht verfΣlschen kann.
  302.  
  303.  
  304.  
  305. 3.3.5 "Oneway" Algorithmen
  306.  
  307. Dann wΣren da noch die Oneway-Algorithmen zu erwΣhnen, die, wie der Name schon sagt, nur verschlⁿsseln k÷nnen. Fⁿr sie ist auch meist der erzeugte Chiffretext (c) kⁿrzer als der eingegebene Klartext (m). Diese Algorithmen machen durchaus Sinn, besonders fⁿr die Authentifizierung beispielsweise in der Passwortverwaltung. Nach der Eingabe des Passwortes auf der Tastatur wird das Passwort verschlⁿsselt und mit dem verschlⁿsselten Passwort in einer Datenbank verglichen. Das Passwort kann nicht mehr zurⁿckgerechnet werden, es kann aber immer noch mit dem eingegebenen verglichen werden. Oneway-Algorithmen sind meist einfacher, da keine Invertierung erforderlich ist. Meist sind sie anwenderspezifisch gestaltet oder es wird die Verschlⁿsselungsfunktion von Standard-Algorithmen genutzt. Ihren Einsatz finden diese Algorithmen oft bei Chipkarten zur Authentifizierung, z.B. Pay-TV, Mobiltelefone oder Zugangskontrolle. (Abbildung 7)
  308.  
  309.  
  310.  
  311.  
  312.  
  313. Abbildung 7: Oneway-Algorithmus zur Authentifizierung
  314.  
  315.  
  316.  
  317. 3.4 Bausteine fⁿr dieses Projekt
  318.  
  319. Von besonderer Bedeutung ist neben der eigentlichen FunktionalitΣt die Auswahl der Bausteine, damit das fertige GerΣt auch bestm÷glich die in der Aufgabenstellung genannten Eigenschaften erfⁿllt: leicht nachzubauen, hohe und preiswerte Verfⁿgbarkeit der Chips und allgemeinen Bauelemente.
  320.  
  321. 3.4.1 ISDN-Bausteine
  322.  
  323. Der ISDN-Chip stellt insofern ein Problem dar, da er mehr zu den Spezialbauteilen geh÷rt und damit schwer beschaffbar ist. Einer der gr÷▀ten Anbieter fⁿr ISDN-Bausteine ist die Firma Siemens. Die Bausteine, die hier in Frage kΣmen, wΣren PEB2080, PEB2085/6 und PEB2185/6. Auch andre Firmen bieten ISDN-Chips an, wie National Semiconductor den TP3420N, Mintel den MT9830 oder Motorola den MC145572. Aber AMD hat mit dem AM79C30A etwas Besonderes auf den Markt gebracht [7]. Er enthΣlt als einziger Chip jegliche FunktionalitΣt, die fⁿr die ISDN-Anbindung derzeit n÷tig ist, angefangen vom S0-Bus-Interface bis hin zu dem CODEC mit seinem A/D, D/A Wandler mit Filter-DSP. Au▀erdem nimmt er einem auch eine Menge Arbeit in den unteren Schichten des D-Kanalprotokolls ab. Desweiteren verfⁿgt er ⁿber eine serielle Schnittstelle fⁿr NutzdatenkanΣle, die sich gut mit einem DSP verbinden lΣ▀t. Auch ist er nicht viel schwerer beschaffbar als die alternativ zuvor erwΣhnten ISDN-Bausteine und befindet sich in einem PLCC-GehΣuse.
  324.  
  325. 3.4.2 Prozessoren fⁿr die Verschlⁿsselung
  326.  
  327. Der verwendete Prozessor oder die verwendeten Prozessoren mⁿssen zwei Kriterien erfⁿllen. Zum einen mu▀ er schnell genug sein, um je einen 8kByte/s gro▀en Datenstrom mit IDEA zu ver- und entschlⁿsseln. Und zum anderen mu▀ er leicht beschaffbar sein und sollte auch nicht viel kosten. Da der IDEA-Algorithmus im Cipher-Feedback-Mode genutzt werden soll und es ja zwei Datenstr÷mme sind, einer hin und einer zurⁿck, mⁿssen hier 16000 IDEA-Berechnugen pro Sekunde bewerkstelligt werden. Der IDEA-Algorithmus besteht hauptsΣchlich aus Multiplikationen. Daher bieten sich DSPs an, da sie Multiplikationen sehr viel schneller ausfⁿhren als normale Prozessoren. Aber die in die engere Wahl gezogenen DSPs eignen sich aufgrund ihres Befehlssatzes schlecht fⁿr Steueraufgaben, sondern eher fⁿr Berechnungen, die in der Regelungstechnik anfallen. Eine andere gute L÷sung wΣre ein komplettes, fertiges Prozessorboard wie das Intel i386EX. Es hat einen 386er mit 25MHz und je 1MByte Flash-EEPROM und RAM. Und es ist schon fertig aufgebaut, nur die ISDN-Hardware, Display und Tastatur mⁿssen noch angefⁿgt werden. Aber selbst der 386er mit 25MHz ist noch ca. 3x zu langsam fⁿr die 16000 IDEAs pro Sekunde, und er ist mit ca. 600 DM auch sehr teuer. Also zurⁿck zu den DSPs. Texas Instruments hat die DSP-Serie TMS320Cxx. Dort gibt es einige DSPs, die ⁿber internen RAM-Speicher und Bootloader verfⁿgen. Wenn dieser RAM-Speicher ausreicht, um das IDEA-Programm und seine Daten zu verwalten, wird kein weiterer externer Speicher mehr fⁿr die DSPs ben÷tigt. Sie mⁿ▀ten dann aber von einem weiteren Prozessor nach jedem Einschalten mit ihrem Programm geladen werden. Aber ein zusΣtzlicher Prozessor wird ohnehin ben÷tigt, da sich DSPs, wie schon erwΣhnt, nicht gut fⁿr die Bedienung der Steuersignale des D-Kanals und des Benutzerinterfaces eignen. Der TMS320C26 ist eine gute Wahl, da er die Kriterien der Aufgabenstellung erfⁿllt. Er ist leicht beschaffbar, preiswert (ca. 33,- DM), besitzt ein PLCC-GehΣuse und ben÷tigt fast keine externen Bauteile [6]. Jedoch schafft der TMS320C26 mit 40MHz nur ca. 11000 IDEAs pro Sekunde. Da aber mit zwei separaten Datenstr÷men von je 8000 Byte/s gearbeitet wird, kann mittels zweier DSPs einerseits der Datenstrom vom Benutzer zur Vermittlungsstelle verschlⁿsselt und mit dem anderen DSP der Datenstrom von der Vermittlungsstelle zum Benutzer entschlⁿsselt werden. Ein weiterer positiver Aspekt ist diesbezⁿglich die serielle Schnittstelle, ⁿber die dieser DSP verfⁿgt. Sie lΣ▀t sich sehr gut mit den Datenstr÷men, die aus dem ISDN-Chip kommen, verschalten. Als Steuerprozessor kommt hier ein schnelles 51er-Derivat von Dallas zum Einsatz, das ein paar wesentliche Vorteile gegenⁿber dem normalen 80C51 hat. Die wichtigsten bei diesem Bauteil genutzten Vorteile sind, da▀ es die Befehle im Durchschnitt 2,5 mal schneller ausfⁿhrt als ein normaler 51er Prozessor bei gleicher Taktfrequenz, die hier sogar ⁿber 33MHz liegen kann. Ein weiterer Vorteil ist, da▀ es ⁿber einen zweiten seriellen Port verfⁿgt. Desweiteren hat der Dallas Prozessor zwei Datenpointer, die zur Adressierung der externen Datenspeicher genutzt werden k÷nnen.
  328.  
  329.  
  330.  
  331.  
  332.  
  333. 4 Grobkonzept
  334.  
  335. Hier werden die beiden wichtigsten Aspekte dieses Projekts vorerst grob umrissen. Dazu geh÷ren die eingesetzten Verschlⁿsselungs-Algorithmen sowie die einzusetzende Hardware.
  336.  
  337. 4.1 Verschlⁿsselungsalgorithmus fⁿr den Datenstrom
  338.  
  339. Da es sich beim B-Kanal um einen Bytestrom handelt, der auch fehlerhafte Bytes enthalten kann, mⁿssen ein paar besondere Anforderungen an den Algorithmus gestellt werden. Zum einen mu▀ es ein Stromchiffrierer sein, der einen kontinuierlichen Byte-Strom verarbeitet. Zum anderen mu▀ er selbstsynchronisierend sein, da auf dem B-Kanal nur die Nutzdaten und keine zusΣtzlichen Steuersignale ⁿbertragen werden k÷nnen. Au▀erdem kann es vorkommen, da▀ ein Byte ausfΣllt oder ein Byte zuviel erkannt wird.
  340.  
  341. Als Verschlⁿsselungsalgorithmus wird in dieser Arbeit der IDEA verwendet. Er lΣ▀t sich im Gegensatz zum DES, der fⁿr Hardware optimiert wurde, relativ einfach als Software realisieren. Mit seinem 128 Bit langen Schlⁿssel ist er sehr sicher. Es existieren 3,4 ( 1038 m÷gliche Schlⁿsselkombinationen. DES mit 56 bittigem Schlⁿssel hat "nur" 7,2 ( 1016 Kombinationen. Selbst wenn man es schafft, zehn Milliarden Schlⁿssel pro Sekunde auszutesten, dafⁿr werden etwa 100000 schnelle PCs ben÷tigt, dauert es etwa 5,4 ( 1020 Jahre um den Schlⁿssel zu "knacken"! Beim DES wΣren es nur 41,7 Tage. Statt der PCs eignen sich FPGAs oder ASICs wesentlich besser zum Austesten von Verschlⁿsselungen. Gerⁿchteweise schaffen es gewisse Geheimdienste, einen DES-Schlⁿssel in 5 Minuten zu bestimmen, aber beim IDEA wΣre es immer noch ein astronomischer Wert von 4,5 ( 1016 Jahren. Der IDEA wird auch in vielen anerkannten Verschlⁿsselungsprogrammen wie PGP eingesetzt. IDEA ist ein Blockchiffrierer, der noch mit einem geeigneteten Rahmenalgorithmus zum Stromchiffrierer umfunktioniert werden mu▀. Eine gute M÷glichkeit ist der "Cipher-Feedback Mode" (Abbildung 8).
  342.  
  343.  
  344.  
  345.  
  346.  
  347. Abbildung 8: Cipher-Feedback Mode mit IDEA
  348.  
  349.  
  350.  
  351. Das wesentliche am Cipher-Feedback Mode ist, da▀ er die letzten acht verschlⁿsselten Bytes die ⁿbertragen werden, in einem Schieberegister sammelt. Damit hat er den 64Bit Eingangswert fⁿr die IDEA-Verschlⁿsselung. Da ja die verschlⁿsselten ⁿbertragenen Bytes auf beiden Seiten (Sender und EmpfΣnger) in die Schieberegister gelangen, sind die Inhalte beider Schieberegister spΣtestens nach 8 Berechnugs-Zyklen (8(125(s = 1ms) gleich und bleiben gleich, solange kein ▄bertragungsfehler auftritt. Somit ist der Ergebnis der IDEA-Verschlⁿsselung auf beiden Seiten gleich, wenn, voraussetzungsgemΣ▀ der Schlⁿssel (k) gleich ist. Von dem 64Bit IDEA-Verschlⁿsselungsergebnis wird ein Byte genommen, meist das MSB, und mit dem Byte aus dem Datenstrom verexclosivodert (Abbildung 8). Der einzige Nachteil dieses Cipher-Feedback-Algorithmus ist, da▀ die achtfache Menge an IDEA-Berechnungen durchgefⁿhrt werden mu▀, wie wenn der IDEA direkt eingesetzt wⁿrde.
  352.  
  353. Nun aber zum eigentlichen IDEA-Algorithmus (Abbildung 9). Der IDEA hat nur drei verschiedene Grundoperationen: XOR, Addition ohne ▄bertrag auf das 17. Bit und eine "IDEA-spezifische Multiplikation". Zum XOR und der Addition gibt es nichts weiter zu sagen, aber zur IDEA-spezifischen Multiplikation. Diese Operation lautet "x = (a*b) mod (216+1)". Der Ausdruck (216+1) mit dem Resultat 65537 ist eine Primzahl. Folgende Festlegung ist zu beachten: Ist einer der Faktoren (a oder b) gleich Null, dann wird er zu 216, und wenn das Ergebnis x der IDEA-spezifischen Multiplikation gleich 216 ist, wird es auf Null gesetzt.
  354.  
  355.  
  356.  
  357.  
  358.  
  359. Abbildung 9: IDEA-Algorithmus
  360.  
  361.  
  362.  
  363. Es existiert ein eleganter Weg, die Modulodivision durch 65537 zu umgehen und damit viel Rechenzeit und Speicher einzusparen. Nach der Multiplikation erfolgt eine Subtraktion des Low-Word vom High-Word des Produkts, und ist dabei ein ▄bertrag entstanden, wird eine Eins auf das Ergebnis addiert. Zur Veranschaulichung dient eine C-Funktion, die genau diese Operation durchfⁿhrt (Abbildung 10):
  364.  
  365.  
  366.  
  367.  
  368.  
  369. Abbildung 10: IDEA-spezifische Multiplikation in C
  370.  
  371.  
  372.  
  373. Vor der Ausfⁿhrung des IDEA-Algorithmus mu▀ jedoch der Schlⁿssel expandiert werden. Dieser ist 128 Bit lang, aber der Algorithmus ben÷tigt 52 mal den 16Bit Teilschlⁿssel (k1,1 - k1,6 / k2,1 - k2,6 / ... / k8,1 - k8,6 / k9,1 - k9,4). Der Ablauf gestaltet sich folgenderma▀en:
  374.  
  375. Aus dem 128bitigem Schlⁿssel werden die ersten acht Teilschlⁿssel (k1,1 - k2,2) entnommen, dann erfolgt eine Rotation des Schlⁿssels um 25 Bit nach links, es werden wiederum die nΣchsten acht Teilschlⁿssel (k2,3 - k3,4) entnommen, und so weiter bis sΣmtliche 52 Teilschlⁿssel vorliegen. Zum Entschlⁿsseln werden die Teilschlⁿssel erstens in den acht Runden vertauscht und zweitens fⁿr die Teilschlⁿssel die inversen Elemente gesucht. Das bedeutet, fⁿr alle Teilschlⁿssel, die an der Addition beteiligt sind, ist es das 2er-Complement. Fⁿr die Teilschlⁿssel, die an der IDEA-Multiplikation beteiligt sind, wird das inverse Element mit dem "Erweitertem Euklidischen Algorithmus" ausfindig gemacht. In der vorliegenden Anwendung ist die IDEA-Entschlⁿsselung nicht von Bedeutung, weil beim Cipher-Feedback Mode auf beiden Seiten nur die Verschlⁿsselung erforderlich ist.
  376.  
  377. Noch eine Anmerkung zum IDEA. Dieser Algorithmus ist urheberrechtlich geschⁿtzt. Der kommerzielle Einsatz ist nicht erlaubt ohne Entrichtung entsprechender Lizenzgebⁿhren. Aber fⁿr private und schulische Zwecke ist er frei verfⁿgbar. Demnach darf das Endprodukt nicht mit diesem Algorithmus verkauft werden, aber erlaubt ist die (kostenlose) Verteilung der Software als Freeware. So ist es auch bei PGP, es ist Freeware.
  378.  
  379.  
  380.  
  381.  
  382.  
  383. 4.2 Blockschaltplan
  384.  
  385. In diesem Kapitel erfolgt die nΣhere Betrachtung der verwendeten Komponenten und deren Verschaltung im Verschlⁿsselungs-Telefon (Abbildung 11). 
  386.  
  387.  
  388.  
  389.  
  390.  
  391. Abbildung 11: Blockschaltbild
  392.  
  393.  
  394.  
  395. Die Chipkarte enthΣlt den Schlⁿssel fⁿr die Verschlⁿsselungsalgorithmen. Die Elektronik am Kartenleser wird so ausgelegt, da▀ sowohl eine Speicher- oder Prozessorkarten Verwendung finden kann. Die Karte wird mit einem Kartenleser am PC initialisiert und mit dem Schlⁿssel beschrieben. Wenn eine Prozessorkarte verwendet wird, kann sie durch eine PIN geschⁿtzt oder sogar Verschlⁿsselungsalgorithmen implementiert werden. Prozessorkarten sind aber wesentlich teurer als Speicherkarten, und sie sind kaum auf dem freien Markt verfⁿgbar. Speicherkarten sind leichter zu beschaffen, wie z.B. die SLE4428, bieten aber kaum zusΣtzliche Funktionen und auch keine Sicherheit zum Schutz des Schlⁿssels gegen unbefugtes Auslesen.
  396.  
  397. Der Steuerprozssor in diesem Telefon ist ein 51er Derivat von Dallas, der einige deutliche Vorteile gegenⁿber dem normalen 80C51 hat. Der 80C320 verfⁿgt ⁿber zwei serielle Ports. Der eine Port wird ben÷tigt, um mit Prozessorchipkarten zu kommunizieren, und der andere zur Kontrolle der Ver- und Entschlⁿsselungs-DSPs.
  398.  
  399. Die gesamte Software wird extern in einem 64kByte gro▀em EPROM abgelegt. Dort liegen auch die Routinen fⁿr die DSPs, die der 80C320 beim Einschalten ⁿber einen seriellen Port zu den DSPs ⁿbertrΣgt.
  400.  
  401. Da der Prozessor selbst nur ⁿber 256Byte RAM verfⁿgt, wird noch 32kByte statisches RAM als externer Datenspeicher angeschlossen.
  402.  
  403. ZusΣtzlich bekommt das GerΣt noch 8kByte NVRAM. Das ist RAM, welches seinen Inhalt auch im spannungslosen Zustand behΣlt, da es eine eigene Lithium-Batterie ⁿber dem Chip hat. In diesem Speicher k÷nnen z.B. Telefonnummernlisten und GerΣteeinstellungen gespeichert werden. Der Einsatz von NVRAMs mit eingebauter Echtzeituhr ist ebenfalls m÷glich.
  404.  
  405. Als Ausgabeeinheit zum Benutzer wird ein Flⁿssigkristall-Display eingesetzt, das direkt am Prozessor-Bus betrieben wird. Ein solches Display kann alle Alpha-Nummerischen-Zeichen und sogar einige selbst definierte Zeichen darstellen.
  406.  
  407. Zur Eingabe wird eine 16er oder 20er Tastatur eingesetzt, die ⁿber einen Tastaturcontroller mit dem Prozessor-Bus verbunden ist. Die Tastatur wird unter anderem ⁿber die zw÷lf bei einem Telefon ⁿblichen Tasten (0 bis 9, * und #) verfⁿgen. ZusΣtzlich kommen noch Tasten zur Menⁿsteuerung (Pfeiltasten, L÷schen und BestΣtung) hinzu.
  408.  
  409. Das Wichtigste an einem ISDN-Telefon ist der ISDN-Controller-Baustein. Er hat die Aufgabe, den S0-Bus zu verwalten, die unteren Schichten des D-Kanals zu bedienen, die B-KanΣle zu verschalten und die A/D-D/A Wandlung der Sprachsignale zu ⁿbernehmen.
  410.  
  411. Der hier benutzte AM79C30A ist der einzige mir bekannte Baustein, der diese Anforderungen in einem Chip unterbringt. Er ist zudem relativ einfach zu beschaffen. Wichtig fⁿr die Verschlⁿsselung ist noch, da▀ B-KanΣle ⁿber eine extra synchronserielle Schnittstelle geleitet  werden k÷nnen. Diese wird ben÷tigt, um die Daten der B-KanΣle zu den DSPs, die sie ver- und entschlⁿsseln, zu ⁿbertragen. Zum S0-Bus hin ist der Baustein ⁿber einen ▄bertrager verbunden, der die Signale galvanisch aus dem S0-Bus entkoppelt, da auch zusΣtzlich die Versorgungspannung von 40V mit auf dem S0-Bus liegt. Aus der 40V Versorgungsspannung auf dem S0-Bus wird mit Hilfe eines Schaltwandlers +5V erzeugt. Im gesamten GerΣt wird nur diese eine Versorgungsspannug von +5V ben÷tigt. Da es vorkommen kann, da▀ das GerΣt mehr Leistung ben÷tigt als der ISDN S0-Bus zur Verfⁿgung stellen kann, besonders die DSPs haben einen hohen Stromverbrauch, mu▀ es auch m÷glich sein, das Telefon mit einem externen Netzteil zu versorgen.
  412.  
  413. Ein Telefon kommt natⁿrlich nicht ohne Mikrofon und Lautsprecher aus. Also mu▀ noch eine OperationsverstΣrkerschaltung fⁿr die analoge Ein- und Ausgabe der akustischen Signale her. Der Audioteil des ISDN-Chips ist mit jeweils zwei Ein- und AusgΣngen ausgestattet. Ein Ein- und Ausgangspaar wird fⁿr den Telefonh÷rer benutzt. Das andere Paar ist fⁿr Mikrofon und Lautsprecher im TelefongerΣt gedacht, der Freisprecheinrichtung. Zudem wird dem Lautsprecher im GerΣt noch die Funktion der Klingel zugewiesen.
  414.  
  415. Die eigentliche Ver- und Entschlⁿsselung ⁿbernehmen die beiden DSPs von Texas Instruments. Sie werden mit 40MHz getaktet, das reicht aus, um je einen 8kByte/s gro▀en Datenstrom mit dem IDEA-Algoritmus im Cipher-Block-Mode zu ver- oder entschlⁿsseln. Die DSPs haben keinen externen Datenspeicher und keinen direkten Programmspeicher, sondern verfⁿgen ⁿber ein 1,5k(16Bit internes RAM. Das Programm fⁿr die DSPs wird nach dem Einschalten von der 51er-CPU ⁿber einen Bootloader in das RAM der DSPs geladen. Die DSPs befinden sich auf einer eigenen Platine, die auf die Hauptplatine aufgesteckt wird. Das geschieht aus zwei Grⁿnden. Zum einen ist so der Algorithmus des Verschlⁿsselungsteils bei Bedarf leicht gegen einen anderen austauschbar. Und wΣren die DSPs mit auf die Hauptplatine gesetzt worden, hΣtte diese die Standard-Abma▀e einer Eurokarte  (160x100mm) weit ⁿberschritten.
  416.  
  417.  
  418.  
  419.  
  420.  
  421. 5 Feinkonzept
  422.  
  423. Hier folgt nun eine detaillierte Beschreibung aller Hardwarekomponenten und eine genaue Beschreibung der Crypto-Software.
  424.  
  425. 5.1 Die Chipkarte
  426.  
  427. Eine Chipkarte, Σhnlich der Telefonkarte der Telekom, soll hier eingesetzt werden, um den geheimen Schlⁿssel zu speichern. In der ISO-7816 sind sΣmtliche Normen zum Thema Chipkarte enthalten [4]. Aber jeder Hersteller weicht fⁿr seine Anwendung von diesen Vorgaben ab.
  428.  
  429.  
  430.  
  431.  
  432.  
  433. Abbildung 12: Kontaktbelegung einer ⁿblichen Chipkarte
  434.  
  435.  
  436.  
  437. Die Belegung der Kontakte auf Chipkarten (Abbildung 12) ist fast immer gleich, sogar die von Speicher- und Prozessorkarten. Die Kontakte fⁿr die Stromversorgung (VCC und GND) befinden sich immer an derselben Stelle. SΣmtliche Karten arbeiten mit +5V, die hier ⁿber den Schutzwiderstand R60 (siehe Stromlaufplan ab Seite 63) gefⁿhrt werden. Ein in der Entwicklungsphase vorgesehener Kontakt fⁿr die EEPROM-Programmierspannung kommt nicht zum Einsatz, da alle Chipkarten mit einer eigenen Ladungspumpe ausgestattet sind. Der bedeutendste Unterschied in der Beschaltung einer Speicher- oder Prozessorkarte betrifft den Takteingang (CLK). Bezⁿglich der Speicherkarte ist er der Schiebetakt fⁿr den seriellen Bitstrom am Datenkontakt (DAT). Mit jeder fallenden Flanke am Takteingang wird das nΣchste Bit am Datenausgang ausgegeben. Fⁿr die Prozessorkarte ist der CLK-Kontakt der Eingang fⁿr den Prozessortakt, der meist 3,57MHz betrΣgt. Er wird ben÷tigt, weil eine Prozessorkarte ⁿber keine eigene Takterzeugung verfⁿgt; denn eine Chipkarte ist zu dⁿnn fⁿr einen Quarz. Also mu▀ die Hardware des Chipkartenschachts so ausgelegt sein, da▀ sie eine Frequenz von 3,57MHz am CLK-Kontakt zur Verfⁿgung stellt oder den Pegel des CLK-Kontaktes direkt festlegen kann. Dafⁿr ist IC10a/b/c zustΣndig; es erzeugt die Frequenz mit Hilfe eines Quarzes, und der Prozessor kann ⁿber zwei Portleitung den CLK-Pin high, low oder mit dieser Frequenz beschalten.
  438.  
  439.  
  440.  
  441.  
  442.  
  443. Abbildung 13: Clk-Pin der Chipkarte
  444.  
  445.  
  446.  
  447. Mittels des Reset-Kontaktes (RES) auf der Prozessorkarte wird er ein low-aktiver Hardwarereset ausgel÷st. Auf der Speicherkarte hat dieser Eingang noch zusΣtzliche Aufgaben, die in Verbindung mit dem CLK-Eingang bestimmt werden. Aber fⁿr die Hardware des Chipkartenschachts, der an die Steckleiste X3 angeschlossen ist, reicht es, ihn mit einer Portleitung des Prozessors zu verbinden. Der gesamte bidirektionale Datenaustauch findet ⁿber den Open-Collector DAT-Kontakt statt, Σhnlich dem RS232 Protokoll, jedoch mit 5Volt Pegel und nur einer Leitung fⁿr beide Richtungen. Es existieren keine zusΣtzlichen Steuerleitungen; die ▄bertragung enthΣlt ein Startbit(0), 8 Datenbits, ggf. ein ParitΣtsbit und 2 Stopbits(1). Die Baudrate ergibt sich durch eine Teilung des Prozessortaktes am CLK-Eingang, die meist 372 betrΣgt. Damit ergeben sich bei 3,57MHz 9600 Baud. Deswegen wird ein serieller Port des Prozessors fⁿr die Kommunikation mit der Chipkarte verwendet. Da der Prozessor jeweils eine extra Leitung fⁿr beide Richtungen hat, werden sie einfach verbunden. Es existiert eine Unmenge genormter und ungenormter Protokolle fⁿr Prozessorchipkarten, so da▀ sie nicht weiter erwΣhnt werden, sondern nur das hier eingesetzte Protokoll, welches eine reduzierte Variante des ISO7816-T=1 ist (Abbildung 14).
  448.  
  449. Nach dem Reset sendet die Karte einen ATR-String, der Inhalt dieser Bytefolge gibt Auskunft ⁿber das verwendete Protokoll und ist in der ISO7816 Norm definiert. Fⁿr die Chipkarte handelt es sich nur um einen konstanten String, der gesendet wird.
  450.  
  451.  
  452.  
  453.  
  454.  
  455. Abbildung 14: Protokoll der Prozessorchipkarte
  456.  
  457.  
  458.  
  459. Danach wartet die Karte auf Daten vom Terminal. Ein Paket vom Terminal beginnt immer mit einem 6 Byte langen Header, der ausschlie▀lich mit $01 beginnt. Dieses Byte war vorgesehen, um mehrere Karten am Bus zu adressieren, aber hier gibt es nur eine einzige. Das zweite Byte ist das Class-Byte und wΣhlt die Anwendung innerhalb der Karte aus. Da hier nur eine Anwendung existiert, nΣmlich die Bereitstellung des Schlⁿssels, gibt es auch nur ein Classbyte, welches willkⁿrlich den Wert $02 erhΣlt. Dann folgt das Instruction-Byte mit dem Kommando an die Karte. Die Commandbytes sind ebenfalls in der ISO7816-4/-5 genormt, aber kaum jemand hΣlt sich an die Regelung. P1 und P2 sind zusΣtzliche Parameter fⁿr das Kommando. Als letztes Byte im Header erscheint die LΣnge der Daten, die das Terminal mit diesem Kommando an die Karte schicken will. Mit dem Inhalt $00 werden keine Daten zur Karte geschickt, und das Datenfeld ist leer. Zum Abschlu▀ des Packets kommt ein Prⁿfbyte, das als Checksumme alle Bytes des Pakets verexclusivodert enthΣlt. Hat die Karte nun ein solches Packet als gⁿltig erkannt, so schickt es ein Antwortpaket, welches gleichfalls aus einem Header, ggf. Daten und einem Prⁿfbyte besteht. Das Class-Byte, Instruction-Byte und die beiden Parameterbytes sind identisch mit denen des Headers vom Terminal. ZusΣtzlich enthΣlt aber dieser Header noch zwei Statuswortbytes, die Fehlercodes oder Σhnliches enthalten, vergleichbar dem Return-Wert bei C-Funktionen. Jetzt macht das Len-Byte eine Aussage ⁿber die Anzahl der Datenbytes, die die Karte ans Terminal zu schicken beabsichtigt. Abgeschlossen wird das Paket wieder mit dem Prⁿfbyte.
  460.  
  461. Die einfache Version der hier verwendeten Karte wird nur drei Kommandos kennen: Status anzeigen ($F2), PIN vergleichen ($20) und Schlⁿssel ausgeben ($C0). Da es schwer ist, als Privatkunde auf dem freien Markt Prozessorchipkarten zu kaufen, fertigt man sich einfach eine 0,7mm dⁿnne Leiterplatte in Form einer Chipkarte (85 x 54mm) und l÷tet einen SMD-Einchip-Mircocontroller auf. Hier wird ein PIC16C84 von der Firma Microchip verwendet, da er ⁿber EEPROM Speicher verfⁿgt. M÷glicherweise wird jedoch die Verfⁿgbarkeit von Prozessorchipkarten in Zukunft etwas einfacher. Es folgt nun ein Beispiel fⁿr einen Protokollablauf (Abbildung 15).
  462.  
  463.  
  464.  
  465.  
  466.  
  467. Abbildung 15: Kartenprotokoll Beispiel
  468.  
  469.  
  470.  
  471. Im Rahmen der vorliegenden Diplomarbeit, hinsichtlich der zur Verfⁿgung stehenden Zeit, ist die Anzahl der Funktionen begrenzt. Ein erweiterter Funktionsumfang wⁿrde zudem folgende Optionen erm÷glichen: PIN Σndern, mehrere Schlⁿssel verwalten, RSA-Algorithmen.
  472.  
  473. 5.2 Der Steuerprozessor mit Speicher
  474.  
  475. Der 51er-Prozessor hat einen 8Bit Datenbus und 16Bit Adre▀bus. Aus fertigungstechnischen Grⁿnden (nur 40 Pins im GehΣuse!) werden die acht Datenbits mit den unteren acht Bits des Adre▀busses gemultiplext [3]. IC2 (74ACT573) speichert bei fallender Flanke von ALE das Low-Byte der Adresse zwischen. Der 51er-Prozessor kennt drei Arten von Speicher. Das interne RAM ist 256 Bytes gro▀ und enthΣlt zudem 128 Special-Function-Register (SFRs). In diesem Bereich wird zudem der Stack gehalten. Der Programmspeicher des 51er Prozessors kann nur gelesen werden. In ihm stehen nur die Opcodes mit ihren Parametern und konstante Daten. Mit Hilfe des /EA-Pins wird festgelegt, ob interner oder externer Programmspeicher angesprochen werden soll. Da aber der verwendete DS80C320 (IC1) ⁿber keinen internen Programm-Speicher verfⁿgt, wird Pin /EA fest auf Masse gelegt. Die /PSEN-Leitung des Prozessors steuert das Auslesen des externen Programmspeichers, einem EPROM IC3 (27C512), welches zuvor mit einem EPROM-Brenner mit den Daten beschrieben wird. In diesem Speicher befindet sich auch das Programm fⁿr die beiden DSPs und wird nach jedem Einschalten an sie gesendet. Der externe Datenspeicherbereich (Abbildung 16) kann vom Prozessor gelesen und beschrieben werden, ist wie der Programmspeicherbereich 64kByte gro▀ und wird mit den /RD und /WR Leitungen angesprochen. Mittels IC8a (74HCT139) und IC9a (74HCT00) wird der Datenspeicherbereich in eine 32kByte und vier 8kByte Sektionen geteilt. Der 32kByte-Bereich ist bestimmt fⁿr IC3 (62C256), einem statischen RAM. Das Chipselect fⁿr dieses RAM ist ausschlie▀lich die Adre▀leitung A15; sie ist fⁿr die Adressen $0000 bis $7FFF low, und der eigentliche Lese- oder Schreibzugriff erfolgt dann mit den Steuerleitungen /RD oder /WR. Wenn A15 high ist, wird IC8a (74HCT139) freigegeben, das den Adre▀breich von $8000 bis $FFFF vierteilt. Die ersten 8kByte ab $8000 sind fⁿr einen besonderen RAM-Baustein (IC5) vorgesehen. Er ist durch eine Batterie gebuffert und enthΣlt in den letzten 8Byte eine Echtzeituhr (RTC). Diese Echtzeiteinrichtung ist nicht nur als Uhr fⁿr den Benutzer gedacht, sondern es k÷nnen zudem Timestamps fⁿr die Verschlⁿsselung erzeugt werden (z.B. jeden Tag einen anderen abgeleiteten Schlⁿssel). Die ⁿbrigen drei 8kByte Bereiche im Datensektor sind fⁿr die Peripherie vorgesehen, wie LC-Display, Tastatur und ISDN-Controller.
  476.  
  477.  
  478.  
  479.  
  480.  
  481. Abbildung 16: Speicherraum des Steuerprozessors (DS80C320)
  482.  
  483.  
  484.  
  485. 5.3 Der Steuerprozessor mit Peripherie
  486.  
  487. Am Systembus des Steuerprozessors befinden sich die drei zuvor erwΣhnten Peripherieeinheiten. LCD-Module gibt es in vielen verschiedenen Ausfⁿhrungen: mit oder ohne Hintergrundbeleuchtung, unterschiedliche Spalten- und Zeilenzahlen, verschiedene Zeichengr÷▀en. Aber die Hardwareanbindung und Softwareschnittstellen sind fast immer gleich, bedingt durch einen Quasi-Standard seitens der unterschiedlichen Hersteller, die aus dem Angebot der verfⁿgbaren Controller wΣhlen mⁿssen. An der 14poligen Steckleiste (X1) befinden sich acht Datenleitungen, eine Adre▀leitung, eine Schreib/Leseleitung, ein Enable und drei Leitungen fⁿr Versorgungsspannung und Kontrast. Alle Steuer-, Adre▀- und Datenleitungen k÷nnen direkt mit dem Systembus verbunden werden, mit Au▀nahme der Enableleitung. Diese darf nur in den High-Zustand gehen, wenn /RD oder /WR low sind und die Adresse $A000-$BFFF anliegt. Es werden vom Display zwar nur  zwei Bytes ben÷tigt, aber es sind fⁿr jeden Peripheriebaustein 8kByte vorgesehen. Der Aufwand wΣre im Sinne der Aufgabenstellung, einfach und preisgⁿnstig, zu hoch, um die Adressen fⁿr alle Peripheriebausteine aufs Byte genau auszudecodieren, denn dann wΣre eine Vielzahl von weiteren TTL-Bausteinen oder ein programmierter Logikbaustein erforderlich. Der eingebaute Controller des LC-Displays hat zwei Register. In das erste Register, das Datenregister, wird der ASCII-Code des darzustellenden Zeichens geschrieben. Das zweite Register, das Controllregister, dient zur Steuerung der Displayfunktionen, wie Anzeige l÷schen, Cursorposition setzen, eigenen Zeichensatz definieren u.s.w. 
  488.  
  489. Als weiteres PeripheriegerΣt fⁿr den Anschlu▀ an den Systembus ist eine Tastatur mit 16 oder 20 Tasten vorgesehen. Der Tastaturcontroller ist auf der Hauptplatine untergebracht und wird ⁿber den Steckverbinder X2 mit der Tastatur-Tastenmatrix verbunden. Der hier eingesetzte Tastaturcontroller 74C922/3 von National Semiconductors ⁿbernimmt alle fⁿr den Betrieb einer kleinen Tastaturmatrix n÷tigen Aufgaben. Dazu geh÷ren die Beschaltung der Spaltenleitungen und die Auswertung der Zeilenleitungen. Darⁿberhinaus ⁿbernimmt er auch die Entprellung der Tasten. Ist eine Taste betΣtigt worden, l÷st er einen Interrupt aus, und der Prozessor kann sich den Scancode der zuletzt gedrⁿckten Taste aus dem Register des Tastaturcontrollers holen.
  490.  
  491. 5.4 Die ISDN-Hardware
  492.  
  493. Das letzte und wichtigste PeripheriegerΣt betrifft der ISDN-Hardware (Abbildung 17). Alle fⁿr den ISDN-Bus und das Audio-Interface n÷tigen Funktionen ⁿbernimmt das IC6 (Am79C30A), welches sich der CPU mit nur 8 Registern zeigt. Es existieren insgesamt ⁿber sechzig Register in diesem Chip, die jedoch indirekt angesprochen werden. Die direkt adressierbaren Register sind fast alle fⁿr die FIFO-Buffer der B-KanΣle und des D-Kanals vorgesehen. Es ist ein Command- und Datenregister fⁿr die indirekt adressierten Register vorhanden. Das Interrupt- und D-Kanal- Statusregister sind ebenfalls direkt adressierbar. Alle weiteren Register des Chips werden ⁿber das Command- und Datenregister angesprochen. Durch das Schreiben der Registernummer in das Commandregister wird mit dem Datenregisterzugriff der Zugang zum entsprechenden Registerinhalt erm÷glicht.
  494.  
  495.  
  496.  
  497.  
  498.  
  499. Abbildung 17: ISDN-Hardware
  500.  
  501.  
  502.  
  503. Der S0-Bus wird ⁿber ein ▄bertragerpaar (TR1) an den ISDN-Chip angeschlossen. Die Dioden (D31-D38) schⁿtzen ausschlie▀lich vor ▄berspannung. Da der S0-Bus zusΣtzlich eine Spannung von 40V fⁿhrt, wird diese fⁿr den Betrieb des GerΣts verwendet. Die 40V werden an den Mittelanzapfungen des ISDN-▄bertragerpaars auf der S0-Busseite abgegriffen. Am Jumperfeld JP1 kann festgelegt werden, ob und mit welcher PolaritΣt die Spannung genutzt wird. Die PolaritΣt spielt eine Rolle hinsichtlich der Notstromberechtigung des GerΣtes. Der eingesetzte Step-Down-Wander (IC13) kann Spannungen im Bereich von 8V bis 57V in 5V (1A max.) umsetzen. ▄ber die Diode D10 kann der Spannungsanschlu▀ vom S0-Bus erfolgen, und an Diode D11 kann wahlweise auch ein externes Netzteil angeschlossen werden. Besondere Aufmerksamkeit wird der InduktivitΣt L10 gewidmet. Diese Spule mu▀ erstens ihre InduktivitΣt (1mH) auch bei 52kHz halten, und zweitens ist die Auslegung des Spulendrahtes fⁿr mindestens 2A unumgΣnglich.
  504.  
  505. Da der ISDN-Chip die Audiofunktionen ⁿbernimmt, hat er analoge Ein- und AusgΣnge fⁿr je zwei Mikrofone und Lautsprecher. Also gibt es auch je zwei Mikrofon- und LautsprecherverstΣrker.
  506.  
  507. Die AnalogeingΣnge des ISDN-Chips erwarten eine Eingangsspannung von ~0,625Vrms bei 0dB. Die MikrofonverstΣrker (IC11a/b) sind OPVs in invertierendem Betrieb und liefern eine ein- bis fⁿfzig VerstΣrkung, die mit dem Poti P3/P4 einstellbar ist. Ebenso k÷nnen auch andere Audioquellen (z.B. Kassettenrecorder) an das Telefon angeschlossen werden. Die Mikrofone werden mit dem Steckverbinder X6 verbunden. Zum Audioeingang geh÷rt auch die RC-Kombination R30 und C30, die fⁿr den A/D-Wandler im ISDN-Chip gebraucht wird. Der ISDN-Chip liefert auch eine Referenzspannung an Pin 43, die ca. +2,5V betrΣgt und als Null-Spannung fⁿr die OPVs genutzt wird.
  508.  
  509. Die AudioausgΣnge des ISDN-Chips sind als DifferenzialausgΣnge ausgelegt und liefern ~1,25Vrms bei 0dB. Diese AusgΣnge sollten auch im Differenzsignalbetrieb genutzt werden, um St÷rungen zur unterdrⁿcken. Daher werden die OPVs (IC11c/d) auch als DifferenzverstΣrker eingesetzt. Weiterhin existiert noch eine Lautsprecherendstufe (IC12), die niederohmige Lasten (4(/8() vertragen kann und eine Leistung von einem Watt fⁿr die Lautsprecher liefert. Die LautstΣrke lΣ▀t sich am Poti P1/P2 einstellen. Angeschlossen werden die Lautsprecher am Steckverbinder X5.
  510.  
  511. Der Steckverbinder X7 steht zur Verfⁿgung fⁿr den Anschlu▀ eines Tasters oder Schalters, der dem Telefon anzeigt, ob der H÷rer grade aufgelegt oder abgehoben ist. Eine Flanke auf dieser Leitung kann einen Interrupt ausl÷sen.
  512.  
  513. Fⁿr die Verschlⁿsselung der Daten ist der serielle Peripherie-Port des ISDN-Chips wichtig, denn er kann drei B-KanΣle synchron seriell ⁿbertragen, die mit dem Multiplexer im ISDN-Chip auswΣhlbar sind. In der vorliegenden Arbeit werden jedoch nur zwei B-KanΣle ben÷tigt, einer zum S0-Bus hin und ein weiterer in Richtung A/D-D/A-Wandler. Dieser serielle Port des ISDN-Chips wird ⁿber den Steckverbinder X12 mit der DSP-Platine verbunden.
  514.  
  515.  
  516.  
  517.  
  518.  
  519. Abbildung 18: Anbindung der DSPs an den ISDN-Chip
  520.  
  521.  
  522.  
  523. Auf die Steckleisten X11 und X12 wird die DSP Platine aufgesetzt. ▄ber X11 sind die DSPs mit der CPU (IC1) verbunden. Diese Verbindung dient zum Laden des Programms und zur Kontrolle der DSPs durch die CPU. ▄ber X12 sind die seriellen Schnittstellen der DSPs direkt mit dem ISDN-Chip verbunden; ein Datenflu▀ des B-Kanals vom ISDN-Chip zu den DSPs und zurⁿck ist m÷glich (Abbildung 18). Jedoch nur durch die Unterstⁿtzung des Multiplexers im ISDN-Chip: Zuerst wird einer der beiden B-KanΣle vom S0-Bus-Interface ausgewΣhlt, eben der B-Kanal, der einem von der Vermittlungsstelle ⁿber den D-Kanal zugeteilt wurde. Falls das GesprΣch nicht verschlⁿsselt ist, wird dieser Kanal direkt zum Audioteil durchgeschaltet. Aber im Fall eines verschlⁿsselten GesprΣches wird nun der B-Kanal vom S0-Bus-Interface zum Bd-Kanal der seriellen Peripherieschnittstelle und der Be-Kanal der seriellen Peripherieschnittstelle zum Audioteil durchgeschaltet.  Auf dieser seriellen Peripherieschnittstelle werden hintereinander drei B-KanΣle ⁿbermittelt. Der dritte B-Kanal Bf wird hier nicht benutzt. Diese Schnittstelle (Abbildung 19) hat fⁿnf Leitungen, die am Steckverbinder X12 anliegen.
  524.  
  525.  
  526.  
  527.  
  528.  
  529. Abbildung 19: Signale zwischen ISDN-IC und DSPs
  530.  
  531.  
  532.  
  533. Es gibt zwei Frame-Impulse, eine Clockleitung und je eine Datenleitung fⁿr jede Richtung. Bis auf SB-In kommen alle anderen Signale vom ISDN-Chip. Normalerweise wechseln die Daten bei der steigenden Flanke der Clockleitung, eine Umprogrammierung auf die fallende Flanke im ISDN-Chip ist jedoch vorgesehen. Diese M÷glichkeit wird in der vorliegenden Arbeit genutzt, um eine KompatibilitΣt zur Schnittstelle der DSPs zu schaffen. Die DSPs verfⁿgen ⁿber je zwei Frame-ImpulseingΣnge, einer zum Empfangen und einer zum Senden. Der besondere Trick an der Verschaltung der DSPs mit ISDN-Chip ist nun, da▀ die beiden Frame-Impulsleitungen des ISDN-Chips direkt an die beiden Frame-EingΣnge des DSPs gehen, aber beim zweiten DSP vertauscht sind. Damit empfΣngt der Verschlⁿsselungs-DSP Daten vom Be-Kanal und sendet auf dem Bd-Kanal. Und der Entschlⁿsselungs-DSP empfΣngt vom Bd-Kanal und sendet auf dem Be-Kanal. Fⁿr die DSPs werden nur noch die Framesignale mit Hilfe eines 74HCT86 invertiert.
  534.  
  535.  
  536.  
  537. 5.5 Die Ver- und Entschlⁿsselungs-DSPs 
  538.  
  539. Die Software fⁿr die DSPs hat ausschlie▀lich die Aufgabe, das eintreffende Byte mit dem IDEA-Algorithmus im Cipher-Feedback-Mode zu ver- oder entschlⁿsseln und es wieder auszugeben. Dabei unterscheiden sich die Programme fⁿr das Verschlⁿsseln und das Entschlⁿsseln nur geringfⁿgig voneinander. Der einzige Unterschied betrifft die Quelle des ankommenden Bytes, welches in das Schieberegister geschoben wird. Da die beiden Schieberegister auf beiden Seiten mit denselben Daten gefⁿllt werden sollen, wird immer das ⁿbertragene verschlⁿsselte Byte genommen. Beim Verschlⁿsseln ist es das Byte nach der Verexclusivoderung bzw. beim Entschlⁿsseln das Byte vor der Verexclusivoderung. Ansonsten sind beide Programme identisch (Abbildung 20).
  540.  
  541.  
  542.  
  543.  
  544.  
  545. Abbildung 20: Die Interrupt-Routienen der DSPs
  546.  
  547.  
  548.  
  549. Das vollstΣndige Programm wird in einer Interrupt-Service-Routine laufen, ohne jegliche Beteiligung des Hauptprogrammes.
  550.  
  551. Da der IDEA-Algorithmus 8,5 Runden (die halbe Runde bezieht sich auf die Operation mit dem Teilschlⁿssel k9.x) hat, wird er nicht einfach linear geschrieben. Es bietet sich an, eine ZΣhlschleife von 8 DurchgΣngen zu programmieren und die letzte halbe Abschlu▀runde isoliert zu schreiben. Der Zeitverlust durch die Programmierung der Schleife ist unkritisch und in Hinsicht auf den eingesparten Programmspeicher lohnenswert.
  552.  
  553. Bezⁿglich des Programmcodes ist von den drei Grundoperationen des IDEA wieder nur die IDEA-spezifische Multiplikation interessant. Eine einfache Addition und XOR-Opreration braucht nicht weiter erlΣutert zu werden, da sie nur jeweils aus einem Assemblerbefehl bestehen. Die IDEA-spezifische Multiplikation (Abbildung 21) wird analog zum C-Code (Abbildung 10) programmiert. Das vollstΣndige DSP-Listung ist ab Seite 57 abgedruckt.
  554.  
  555.  
  556.  
  557.  
  558.  
  559. Abbildung 21: IDEA-Multiplikation in DSP-Assembler
  560.  
  561.  
  562.  
  563. Zum IDEA geh÷rt auch das Zerlegen des Schlⁿssels in die 52 Teilschlⁿssel. Diese Aufgabe kann sowohl der DSP als auch die CPU ⁿbernehmen, da sie nur einmal am Anfang bei der Initialisierung des Schlⁿssels durchgefⁿhrt wird. In der vorliegenden Arbeit wird der DSP diese Aufgabe mitⁿbernehmen, weil der DSP effektiver mit 16Bit-Werten umgehen kann. Desweiteren ist in "kryptographischer Hinsicht" darauf zu achten, da▀ das Schieberegister fⁿr den Cipher-Feedback-Mode im Verschlⁿsselungs-DSP immer mit anderen beliebigen Werten initialisiert wird. Wenn es immer mit denselben Werten (z.B. $00) initialisiert wⁿrde, gΣbe es fⁿr einen Angreifer unter UmstΣnden Angriffsm÷glichkeiten. Die Initialisierungsaufgabe kann auch gleich von der CPU beim Programmladen in die DSPs mitⁿbernommen werden. Es k÷nnen die Zufallszahlen des ISDN-Chips genutzt werden oder beispielsweise ein angelegter ZΣhler im batteriegepuffertem RAM zum Einsatz kommen.
  564.  
  565. Zur Programmladung der DSPs soll folgendes erwΣhnt werden. Da die DSPs ⁿber kein eigenes (E)PROM verfⁿgen, mu▀ das Programm nach dem Einschalten der Versorgungsspannung in das interne RAM der DSPs geladen werden. Dafⁿr werden vom DSP drei Leitungen ben÷tigt: /Reset, XF und BIO. Der /Reset ist der lowaktive Hardwarereset des DSP, und nach der steigenden Flanke ist der DSP bereit, Daten entgegenzunehmen. XF ist der Statusausgang des DSP und zeigt an, ob die Daten korrekt empfangen worden sind. Fⁿr den seriellen Dateneingang ist BIO zustΣndig. ─hnlich der RS232-Schnittstelle gibt es hier auch hier, wie schon bei der Chipkarte, ein Startbit (0), acht Datenbits und ein oder mehr Stopbits (1). Die Baudrate wird vom DSP anhand des "Baud Detect Word" automatisch erkannt. Nach dem Resetvorgang des DSP schickt der Steuerprozessor eine bestimmte Bytefolge, wie Abbildung 22 sie zeigt.
  566.  
  567.  
  568.  
  569.  
  570.  
  571. Abbildung 22: Bootloader Protokoll fⁿr die DSPs
  572.  
  573.  
  574.  
  575. Das "Baud Detect Word" dient dem DSP zur Ausmessung der Baudrate. Gesendet wird hier einfach $FF. Das "Status Word" enthΣlt nur den High-Teil der TransferlΣnge und einige Konstanten. Gesendet wird in der vorliegenden Arbeit "00001xxx". Das "Interrupt Word" enthΣlt in den obersten zwei Bits die Speicherkonfiguration des DSP und in den unteren sechs Bits die Interruptfreigaben. In dieser Anwendung wird $40 geschickt, da die Interruptfreigabe dann durch das Programm selbst erfolgt. Das "Length" Byte enthΣlt den Low-Teil der TransferlΣnge. Dann folgt der eigentliche Datentransfer. Da der DSP ein 16Bit Prozessor ist, mⁿssen immer zwei Bytes pro Speicherplatz ⁿbertragen werden. Es wird die Anzahl der 16Bit Worte ⁿbertragen, die in der TransferlΣnge angegeben wurde. Abschlie▀end werden noch zwei Byte Checksumme ⁿbertragen, die 16Bit Summe aller Programmdaten. In der Checksumme gehen die Kontrolw÷rter nicht mit ein. Ist nach dem ▄bertragen der Checksumme der XF-Pin des DSPs immer noch high, ist alles in Ordnung. Geht er auf low, ist dieses ein Indiz fⁿr einen Fehler in der ▄bertragung. In dem Fall sollte der DSP in den Resetzustand gebracht und der Programmtransfer erneut probiert werden. Bei der nΣchsten fallenden Flanke am BIO-Pin, erzeugt durch das Senden von $FF, wird das transferierte Progamm gestartet. Die Leitungen XF und BIO unterliegen dann der Programmkontrolle und sind somit fⁿr den Programmierer frei verfⁿgbar. In dieser Arbeit wird das nicht genutzt.
  576.  
  577.  
  578.  
  579.  
  580.  
  581. 6 Zusammenfassung
  582.  
  583. Abschlie▀end erfolgt eine kurze Zusammenfassung der Arbeit mit einer eigenen Bewertung. Desweiteren werden einige Punkte aufgezeigt, wo und wie dieses GerΣt verbessert und erweitert werden kann.
  584.  
  585.  
  586.  
  587. 6.1 Bewertung 
  588.  
  589. Die in der Aufgabenstellung genannten Punkte werden in der vorgelegten Arbeit erfⁿllt. Der Datenstrom lΣ▀t sich in der vorgesehenen Zeit von 125(s verschlⁿsseln. Bei einem Verlust der Synchronisation wird nach 1ms die Synchronisation wieder hergestellt. Durch die Wahl eines 128bit Schlⁿssels ist eine zufΣllige Erkennung weitgehend ausgeschlossen.
  590.  
  591. Zum gr÷▀ten Problem in dieser Diplomarbeit wurde im Grunde genommen genau das, was ursprⁿnglich nicht Teil der Arbeit war: der ISDN D-Kanal. Seine Implementation war fⁿr eine getrennte, parallel verlaufende Diplomarbeit vorgesehen. Aber aus gesundheitlichen Grⁿnden war der Kommilitone gezwungen, seine begonnene Diplomarbeit abzubrechen, und damit gab es fⁿr das Verschlⁿsselungstelefon auch kein D-Kanal-Protokoll. Und ein ISDN-Telefon ohne D-Kanal-Protokoll kann keine Verbindung zur Vermittlungsstelle und damit auch nicht zu einem anderen Telefon aufbauen. Wenn also der Verschlⁿsselungspartner fehlt, wird auch die Verschlⁿsselung als solche ⁿberflⁿssig. Daher mu▀te noch das ISDN D-Kanal Protokoll notdⁿrftig in den Steuerprozessor implementiert werden. Diese zusΣtzliche Arbeit hat viel von den zeitlichen Ressourcen der Diplombearbeitungszeit verbraucht, so da▀ nicht mehr die letzten noch erforderlichen Arbeiten an diesem GerΣt durchgefⁿhrt werden konnten. Das hier programmierte D-Kanal Protokoll arbeitet nur provisorisch und sollte nicht ohne weitere Verbesserungen eingesetzt werden.
  592.  
  593. Probleme gab es auch mit dem Rauschen der analogen OP-VerstΣrkerschaltung, das vom Digitalteil der Schaltung verursacht wurde. Das Rauschverhalten mⁿ▀te noch verbessert werden, aber die Bearbeitungszeit reichte nicht dafⁿr aus.
  594.  
  595. Alles rund um die Kryptographie und den DSPs funktioniert hinreichend gut und macht keinerlei Probleme. Auch die gesamte digitale Hardware des ISDN-Telefons lief auf Anhieb.
  596.  
  597. 6.2 Ausblicke
  598.  
  599. Man kann dieses Verschlⁿsselungstelefon in vielerlei Hinsicht verbessern und ausbauen. Aber zu den wichtigsten Erweiterungen geh÷rt ein Public-Key-Algorithmus, wie RSA und Diffie-Hellmen-Schlⁿsselaustausch. Beide Crypto-ZusΣtze rechnen "c = mk MOD n" mit sehr gro▀en Zahlen (1024Bit oder mehr). Diese Berechnung sollte aufgrund ihres sehr schnellen Multiplikationsverm÷gens in den DSPs durchgefⁿhrt werden. Noch besser wΣre es, wenn die Chipkarte die RSA-Berechnungen durchfⁿhren wⁿrde, da der Secret-Key in ihr einen guten Schutz fΣnde. Aber solche freiprogrammierbaren RSA-Chipkarten stehen den privaten Anwendern noch nicht zur Verfⁿgung. Soll ein RSA-Algorithmus implementiert werden, mu▀ zusΣtzlich ein Protokoll zwischen den beiden Crypto-Telefonen laufen, das den verschlⁿsselten Sitzungsschlⁿssel und die Benutzerdaten ⁿbertrΣgt.
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607. 7 Anhang
  608.  
  609.  
  610.  
  611. 7.1 Abbildungsverzeichnis
  612.  
  613. Abbildung 1: ISDN-Basisanschlu▀    
  614.  
  615. Abbildung 2: ISDN Western-Stecker    
  616.  
  617. Abbildung 3: Signale auf dem ISDN S0-Bus    
  618.  
  619. Abbildung 4: D-Kanal Schichtenmodel    
  620.  
  621. Abbildung 5: Hybrid-Algorithmus mit RSA und IDEA (PGP)    
  622.  
  623. Abbildung 6: Ablauf des Diffie Hellman Schlⁿsselaustauschs    
  624.  
  625. Abbildung 7: Oneway-Algorithmus zur Authentifizierung    
  626.  
  627. Abbildung 8: Cipher-Feedback Mode mit IDEA    
  628.  
  629. Abbildung 9: IDEA-Algorithmus    
  630.  
  631. Abbildung 10: IDEA-spezifische Multiplikation in C    
  632.  
  633. Abbildung 11: Blockschaltbild    
  634.  
  635. Abbildung 12: Kontaktbelegung einer ⁿblichen Chipkarte    
  636.  
  637. Abbildung 13: Clk-Pin der Chipkarte    
  638.  
  639. Abbildung 14: Protokoll der Prozessorchipkarte    
  640.  
  641. Abbildung 15: Kartenprotokoll Beispiel    
  642.  
  643. Abbildung 16: Speicherraum des Steuerprozessors (DS80C320)    
  644.  
  645. Abbildung 17: ISDN-Hardware    
  646.  
  647. Abbildung 18: Anbindung der DSPs an den ISDN-Chip    
  648.  
  649. Abbildung 19: Signale zwischen ISDN-IC und DSPs    
  650.  
  651. Abbildung 20: Die Interrupt-Routienen der DSPs    
  652.  
  653. Abbildung 21: IDEA-Multiplikation in DSP-Assembler    
  654.  
  655. Abbildung 22: Bootloader Protokoll fⁿr die DSPs    
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663. 7.2 Index
  664.  
  665.  
  666.  
  667. A
  668.  
  669. Asymetrische Verschlⁿsselungsalgorithmen    13
  670.  
  671. Audioeingang    34
  672.  
  673. Audiofunktionen    34
  674.  
  675. Authentifizierung    16; 43
  676.  
  677. B
  678.  
  679. Bitstuffing    11
  680.  
  681. Blockchiffrierer    1; 13; 19
  682.  
  683. Bytefolge    28; 39; 46
  684.  
  685. Bytesynchronisation    11; 12
  686.  
  687. C
  688.  
  689. Chipkarte    1; 4; 23; 26; 27; 28; 29; 39; 42; 43; 46; 47; 48
  690.  
  691. Cipher-Feedback Mode    19
  692.  
  693. Clockleitung    36
  694.  
  695. Crypto-Phone    7
  696.  
  697. D
  698.  
  699. Datenbits    27; 29; 39
  700.  
  701. Datenleitung    36; 47
  702.  
  703. DifferenzverstΣrker    34
  704.  
  705. DSM ISDN    6
  706.  
  707. DSP Platine    35
  708.  
  709. E
  710.  
  711. Entschlⁿsseln    12; 13; 22; 36
  712.  
  713. Entschlⁿsselungs-DSP    36
  714.  
  715. F
  716.  
  717. Frame-Impulse    36
  718.  
  719. H
  720.  
  721. Hardwarereset    27; 39
  722.  
  723. I
  724.  
  725. IDEA-Algorithmus    17
  726.  
  727. IDEA-Multiplikation    22
  728.  
  729. IDEA-spezifischen Multiplikation    20
  730.  
  731. Interrupt-Service    37
  732.  
  733. ISDN-Basisanschlu▀    7
  734.  
  735. K
  736.  
  737. Kartenleser    23
  738.  
  739. Kompression    12
  740.  
  741. L
  742.  
  743. Lauschangriff    4
  744.  
  745. LautsprecherverstΣrker    34
  746.  
  747. LCD-Module    31
  748.  
  749. M
  750.  
  751. MikrofonverstΣrker    34
  752.  
  753. Modem    7
  754.  
  755. Modulodivision    21
  756.  
  757. N
  758.  
  759. Notstromberechtigung    33
  760.  
  761. Nutzdaten    4; 10; 12; 19
  762.  
  763. Nutzinformationen    11
  764.  
  765. O
  766.  
  767. Oneway-Algorithmen    16
  768.  
  769. P
  770.  
  771. Passwortverwaltung    16
  772.  
  773. PGP    14; 19; 22; 43; 53
  774.  
  775. PIN    23; 29; 46
  776.  
  777. Primzahl    15; 20
  778.  
  779. Prozessorchipkarten    24; 27; 29
  780.  
  781. Public-Key-Algorithmus    42
  782.  
  783. Puls-Wahl-Modus    7
  784.  
  785. R
  786.  
  787. Rahmenabbruch    11
  788.  
  789. RSA    1; 13; 14; 15; 29; 42; 43; 46
  790.  
  791. RSA-Algorithmus    42
  792.  
  793. S
  794.  
  795. S0-Bus    9
  796.  
  797. Schichtenmodel    10; 43
  798.  
  799. Schlⁿsselaustausch    1; 13; 15; 42
  800.  
  801. Schlⁿsselkombinationen    19
  802.  
  803. Signalisierungskanal    10
  804.  
  805. Sprachverschlⁿsselungssystems    4
  806.  
  807. Startbit    27; 39
  808.  
  809. Steuerprozessor    1; 5; 18; 29; 31; 39; 41
  810.  
  811. Stichleitungen    8
  812.  
  813. Stopbits    27; 39
  814.  
  815. Stromchiffrierer    1; 13; 19
  816.  
  817. Symmetrische Verschlⁿsselungsalgorithmen    13
  818.  
  819. T
  820.  
  821. Takterzeugung    27
  822.  
  823. Taktfrequenz    18
  824.  
  825.  
  826. ▄bertragerpaar    33
  827.  
  828. ▄bertragungsfehler    20
  829.  
  830. V
  831.  
  832. Verschlⁿsseln    10; 36
  833.  
  834. Verschlⁿsselungsalgorithmus    1; 19; 46
  835.  
  836. Verschlⁿsselungs-DSP    36
  837.  
  838. Z
  839.  
  840. Zufallszahlen    38
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848. 7.3 Glossar
  849.  
  850. ASIC        Application Specific Integrated Circuits
  851.  
  852.         Anwenderspezifischer Logikbaustein
  853.  
  854. ATR        Answer to Reset
  855.  
  856.         Bytefolge von einer Chipkarte nach dem Reset
  857.  
  858. DES        Data Encryption Standard
  859.  
  860.         Symmetrischer Verschlⁿsselungsalgorithmus
  861.  
  862. DIL        Dual in Line
  863.  
  864.         ChipgehΣusebauform
  865.  
  866. DSP        Digitaler Signal Prozessor
  867.  
  868.         Spezialisierter Prozessor
  869.  
  870. DTMF        Dual Tone Modulation Frequencity
  871.  
  872.         Zwei-Frequenz-T÷ne zum WΣhlen
  873.  
  874. FPGA        Field Programmable Gate Array
  875.  
  876.         Programmierbarer Logikbaustein
  877.  
  878. IDEA        International Data Encryption Algorithm
  879.  
  880.         Symmetrischer Verschlⁿsselungsalgorithmus
  881.  
  882. ISDN        Integrated Services Digital Network
  883.  
  884.         Bezeichnung fⁿr das digitale Telefonnetz
  885.  
  886. LSB        Last Significant Byte
  887.  
  888.         Niederwertigstes Byte/Bit
  889.  
  890. MOD        Modulo-Division
  891.  
  892.         der Rest einer Division
  893.  
  894. MSB        Most Significant Byte
  895.  
  896.         H÷chstwertiges Byte/Bit
  897.  
  898. MUX        Multiplexer
  899.  
  900.         Baustein zum Umschalten von Signalen
  901.  
  902. NTBA / NT    Network Termination
  903.  
  904.         GerΣt von der Telekom fⁿr ISDN-Basisanschlu▀
  905.  
  906. oc        Open Collector
  907.  
  908.         Ausgangstreiber schaltet nur gegen Masse
  909.  
  910. PIN        Personal Identification Number
  911.  
  912.         Pers÷nliche Geheimzahl
  913.  
  914. PLCC        Plastic Lead Chip Carrier
  915.  
  916.         ChipgehΣusebauform
  917.  
  918. RSA        Rivest, Shamir und Adleman
  919.  
  920.         Public-Key Verschlⁿsselungsalgorithmus
  921.  
  922. TE        Termianl Equipent
  923.  
  924.         EndgerΣt
  925.  
  926. 7.4 Liste der Signalnamen
  927.  
  928. GND            Masse
  929.  
  930. VCC            +5V Versorgungsspannung
  931.  
  932.  
  933.  
  934. RESET            Zurⁿcksetzen der CPU und des ISDN-Chips
  935.  
  936. AD7 - AD0        Gemultiplexter Daten- Adre▀bus von der CPU
  937.  
  938. ALE            Zeigt gⁿltige Adresse an
  939.  
  940. A15 - A8        Adre▀bus(Highteil) von der CPU
  941.  
  942. A7 - A0            Adre▀bus(Lowteil) von der CPU, vom IC2 zwischengespeichert
  943.  
  944. /PSEN            Lesezugiff auf Programmspeicher (oc)
  945.  
  946. /RD            Lesezugriff von der CPU auf Datenspeicher und Peripherie (oc)
  947.  
  948. /WR            Schreibzugriff von der CPU auf Datenspeicher und Peripherie                     (oc)
  949.  
  950.  
  951.  
  952. /CS_NVRAM        Chipselect fⁿr Batterie gepuffertes RAM bei $8000-$9FFF
  953.  
  954. /CS_DISP        Chipselect fⁿr LC-Display bei $A000-$BFFF
  955.  
  956. /CS_KEYB        Chipselect fⁿr Tastaturcontroller bei $C000-$DFFF
  957.  
  958. /CS_ISDN        Chipselect fⁿr ISDN-Controller bei $E000-$FFFF
  959.  
  960.  
  961.  
  962. IRQ_ISDN        Interruptanforderung vom ISDN-Controller low-aktiv
  963.  
  964. IRQ_KEYB        Interruptanforderung vom Tastaturcontroller high-aktiv
  965.  
  966.  
  967.  
  968. DSP_D_I        Serielle Daten zun den DSPs (oc)
  969.  
  970. DSP_D_O        Serielle Daten von den DSPs (oc)
  971.  
  972. DSP_RES        Rⁿcksetzen der DSPs (oc)
  973.  
  974. DSP_MUX        Auswahlleitung fⁿr die beiden DSPs (oc)
  975.  
  976.  
  977.  
  978. CC_RES        Rⁿcksetzleitung fⁿr Chipkarte (oc)
  979.  
  980. CC_CLK        Takt fⁿr Speicherchipkarte (oc)
  981.  
  982. CC_Mode        Taktfreigabe fⁿr Prozessorchipkarte (oc)
  983.  
  984. CC_DAT        Datenleitung fⁿr Chipkarte (oc)
  985.  
  986. CC_SW        Schaltkontakt des Chipkartenschachts 
  987.  
  988.  
  989.  
  990. 7.5 Pinbelegung der Steckverbinder
  991.  
  992. Pin 1 hat im Layout immer ein quadratisches L÷tauge. Die anderen sind rund.
  993.  
  994.  
  995.  
  996. X1: LC-Display
  997.  
  998.     1    : GND
  999.  
  1000.     2    : Vcc +5V
  1001.  
  1002.     3    : Kontrastspannung +0..2,5V
  1003.  
  1004.     4    : Adre▀leitung 0
  1005.  
  1006.     5    : /Write
  1007.  
  1008.     6    : Enable
  1009.  
  1010.     7    : Datenleitung 0
  1011.  
  1012.     8    : Datenleitung 1
  1013.  
  1014.     9    : Datenleitung 2
  1015.  
  1016.     10    : Datenleitung 3
  1017.  
  1018.     11    : Datenleitung 4
  1019.  
  1020.     12    : Datenleitung 5
  1021.  
  1022.     13    : Datenleitung 6
  1023.  
  1024.     14    : Datenleitung 7
  1025.  
  1026.  
  1027.  
  1028. X2: Tastatur
  1029.  
  1030.     1    : Spaltenleitung 4
  1031.  
  1032.     2    : Spaltenleitung 3
  1033.  
  1034.     3    : Spaltenleitung 2
  1035.  
  1036.     4    : Spaltenleitung 1
  1037.  
  1038.     5    : Zeilenleitung 5
  1039.  
  1040.     6    : Zeilenleitung 4
  1041.  
  1042.     7    : Zeilenleitung 3
  1043.  
  1044.     8    : Zeilenleitung 2
  1045.  
  1046.     9    : Zeilenleitung 1 ( wird nur bei 20er Tastatur benutzt )
  1047.  
  1048.  
  1049.  
  1050. X3: Chipkarte
  1051.  
  1052.     1    : VCC fⁿr Chipkarte
  1053.  
  1054.     2    : RES-Leitung fⁿr Chipkarte
  1055.  
  1056.     3    : CLK-Leitung fⁿr Chipkarte
  1057.  
  1058.     4    : DAT-Leitung fⁿr Chipkarte
  1059.  
  1060.     5    : Taster zur Erkennung der Chipkarte
  1061.  
  1062.     6    : GND
  1063.  
  1064.  
  1065.  
  1066. X4: S0-Bus
  1067.  
  1068.     1    : b2 auf Pin 3 des Westernsteckers
  1069.  
  1070.     2    : b1 auf Pin 4 des Westernsteckers
  1071.  
  1072.     3    : a1 auf Pin 5 des Westernsteckers
  1073.  
  1074.     4    : a2 auf Pin 6 des Westernsteckers
  1075.  
  1076.  
  1077.  
  1078. X5: Audio-Ausgang
  1079.  
  1080.     1    : GND
  1081.  
  1082.     2    : Lautsprecher fⁿr Kopfh÷rer
  1083.  
  1084.     3    : GND
  1085.  
  1086.     4    : Lautsprecher fⁿr GerΣt
  1087.  
  1088.  
  1089.  
  1090. X6: Audio-Eingang
  1091.  
  1092.     1    : GND
  1093.  
  1094.     2    : Mikrofon fⁿr Kopfh÷rer
  1095.  
  1096.     3    : GND
  1097.  
  1098.     4    : Mikrofon fⁿr GerΣt
  1099.  
  1100.  
  1101.  
  1102. X7: Gabelschalter
  1103.  
  1104.     1    : GND
  1105.  
  1106.     2    : Taster / Schalter
  1107.  
  1108.  
  1109.  
  1110. X11: DSP-Platine
  1111.  
  1112.     1    : GND
  1113.  
  1114.     2    : DSP-Mux
  1115.  
  1116.     3    : DSP-Reset
  1117.  
  1118.     4    : Control-Data DSP -> CPU
  1119.  
  1120.     5    : Control-Data CPU -> DSP
  1121.  
  1122.     6    : Vcc
  1123.  
  1124.  
  1125.  
  1126. X12: DSP-Platine
  1127.  
  1128.     1    : GND
  1129.  
  1130.     2    : Frame-Sync 1
  1131.  
  1132.     3    : Frame-Sync 2
  1133.  
  1134.     4    : Clock ( 192 kHz )
  1135.  
  1136.     5    : ISDN-Data ISDN -> DSP
  1137.  
  1138.     6    : ISDN-Data DSP -> ISDN
  1139.  
  1140.     7    : Vcc
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146. 7.6 Stⁿcklisten
  1147.  
  1148. 7.6.1 Stⁿckliste ISDN-Telefon-Board
  1149.  
  1150. Halbleiter:
  1151.  
  1152. 1x
  1153.  
  1154. DS80C320
  1155.  
  1156. DIL40
  1157.  
  1158. IC1
  1159.  
  1160.  
  1161.  
  1162. 1x
  1163.  
  1164. 74ACT573
  1165.  
  1166. DIL20
  1167.  
  1168. IC2
  1169.  
  1170.  
  1171.  
  1172. 1x
  1173.  
  1174. 27C512-100
  1175.  
  1176. DIL28 prog.
  1177.  
  1178. IC3
  1179.  
  1180.  
  1181.  
  1182. 1x
  1183.  
  1184. 62C256-70
  1185.  
  1186. DIL28
  1187.  
  1188. IC4
  1189.  
  1190.  
  1191.  
  1192. 1x
  1193.  
  1194. M48T08-100
  1195.  
  1196. DIL28+Batt.
  1197.  
  1198. IC5
  1199.  
  1200.  
  1201.  
  1202. 1x
  1203.  
  1204. AM79C30A
  1205.  
  1206. PLCC44
  1207.  
  1208. IC6
  1209.  
  1210.  
  1211.  
  1212. 1x
  1213.  
  1214. 74C922/3
  1215.  
  1216. DIL18/20
  1217.  
  1218. IC7
  1219.  
  1220.  
  1221.  
  1222. 1x
  1223.  
  1224. 74ACT139
  1225.  
  1226. DIL16
  1227.  
  1228. IC8
  1229.  
  1230.  
  1231.  
  1232. 2x
  1233.  
  1234. 74ACT00
  1235.  
  1236. DIL14
  1237.  
  1238. IC9, IC10
  1239.  
  1240.  
  1241.  
  1242. 1x
  1243.  
  1244. TL074
  1245.  
  1246. DIL14
  1247.  
  1248. IC11
  1249.  
  1250.  
  1251.  
  1252. 1x
  1253.  
  1254. TDA7050
  1255.  
  1256. DIL8
  1257.  
  1258. IC12
  1259.  
  1260.  
  1261.  
  1262. 1x
  1263.  
  1264. LM2575HVN
  1265.  
  1266. DIL16
  1267.  
  1268. IC13
  1269.  
  1270.  
  1271.  
  1272. 3x
  1273.  
  1274. MBR160
  1275.  
  1276. RM10
  1277.  
  1278. D10, D11, D12
  1279.  
  1280.  
  1281.  
  1282. 1x
  1283.  
  1284. 1N4148
  1285.  
  1286. RM7,5
  1287.  
  1288. D20
  1289.  
  1290.  
  1291.  
  1292. 8x
  1293.  
  1294. 1N4007
  1295.  
  1296. RM10
  1297.  
  1298. D31-D38
  1299.  
  1300.  
  1301.  
  1302. 1x
  1303.  
  1304. Q=11,052MHz
  1305.  
  1306. RM5
  1307.  
  1308. Q1
  1309.  
  1310.  
  1311.  
  1312. 1x
  1313.  
  1314. Q=12,288MHz
  1315.  
  1316. RM5
  1317.  
  1318. Q2
  1319.  
  1320.  
  1321.  
  1322. 1X
  1323.  
  1324. Q=3,5795MHz
  1325.  
  1326. RM5
  1327.  
  1328. Q3
  1329.  
  1330.  
  1331.  
  1332. WiderstΣnde:
  1333.  
  1334. 1x
  1335.  
  1336. 10(
  1337.  
  1338. RM7,5
  1339.  
  1340. R60
  1341.  
  1342.  
  1343.  
  1344. 4x
  1345.  
  1346. 24(
  1347.  
  1348. RM7,5
  1349.  
  1350. R35-R38
  1351.  
  1352.  
  1353.  
  1354. 1x
  1355.  
  1356. 100(
  1357.  
  1358. RM7,5
  1359.  
  1360. R63
  1361.  
  1362.  
  1363.  
  1364. 6x
  1365.  
  1366. 1,0k(
  1367.  
  1368. RM7,5
  1369.  
  1370. R44-R47, R50, R51
  1371.  
  1372.  
  1373.  
  1374. 1x
  1375.  
  1376. 2,2k(
  1377.  
  1378. RM7,5
  1379.  
  1380. R62
  1381.  
  1382.  
  1383.  
  1384. 4x
  1385.  
  1386. 2,7k(
  1387.  
  1388. RM7,5
  1389.  
  1390. R31-R34
  1391.  
  1392.  
  1393.  
  1394. 16x
  1395.  
  1396. 10k(
  1397.  
  1398. RM7,5
  1399.  
  1400. R20, R30, R33, R39, R40-R43, R52-R57, R70
  1401.  
  1402.  
  1403.  
  1404. 2x
  1405.  
  1406. 100k(
  1407.  
  1408. RM7,5
  1409.  
  1410. R58, R59
  1411.  
  1412.  
  1413.  
  1414. 1x
  1415.  
  1416. 1,0M(
  1417.  
  1418. RM7,5
  1419.  
  1420. R61
  1421.  
  1422.  
  1423.  
  1424. 1x
  1425.  
  1426. 4 x 4,7k(
  1427.  
  1428. SIL5
  1429.  
  1430. RN1
  1431.  
  1432.  
  1433.  
  1434. 1x
  1435.  
  1436. Poti=10k(
  1437.  
  1438. P-10 liegend
  1439.  
  1440. P5
  1441.  
  1442.  
  1443.  
  1444. 2x
  1445.  
  1446. Poti=22k(
  1447.  
  1448. P-10 liegend
  1449.  
  1450. P1, P2
  1451.  
  1452.  
  1453.  
  1454. 2x
  1455.  
  1456. Poti=470k(
  1457.  
  1458. P-10 liegend
  1459.  
  1460. P3, P4
  1461.  
  1462.  
  1463.  
  1464. KapazitΣten:
  1465.  
  1466. 6x
  1467.  
  1468. 15pF
  1469.  
  1470. RM2,5
  1471.  
  1472. C21, C22, C31, C32, C61, C62
  1473.  
  1474.  
  1475.  
  1476. 4x
  1477.  
  1478. 100pF
  1479.  
  1480. RM2,5
  1481.  
  1482. C52, C53, C56, C57
  1483.  
  1484.  
  1485.  
  1486. 1x
  1487.  
  1488. 1,0nF
  1489.  
  1490. RM2,5
  1491.  
  1492. C45
  1493.  
  1494.  
  1495.  
  1496. 1x
  1497.  
  1498. 2,2nF
  1499.  
  1500. RM2,5
  1501.  
  1502. C30
  1503.  
  1504.  
  1505.  
  1506. 20x
  1507.  
  1508. 100nF
  1509.  
  1510. RM2,5
  1511.  
  1512. C33, C43-C45, C52, C53, C58, C59, C101-C112
  1513.  
  1514.  
  1515.  
  1516. 1x
  1517.  
  1518. 220nF
  1519.  
  1520. RM5
  1521.  
  1522. C72
  1523.  
  1524.  
  1525.  
  1526. 2x
  1527.  
  1528. 1,0(F
  1529.  
  1530. RM2,5
  1531.  
  1532. C54, C55
  1533.  
  1534.  
  1535.  
  1536. 1x
  1537.  
  1538. 2,2(F
  1539.  
  1540. RM2,5 tant.
  1541.  
  1542. C20, C71
  1543.  
  1544.  
  1545.  
  1546. 2x
  1547.  
  1548. 47(F / 6V
  1549.  
  1550. RM2,5
  1551.  
  1552. C41, C42
  1553.  
  1554.  
  1555.  
  1556. 1x
  1557.  
  1558. 100(F / 6V
  1559.  
  1560. RM2,5
  1561.  
  1562. C40
  1563.  
  1564.  
  1565.  
  1566. 1x
  1567.  
  1568. 100(F / 60V
  1569.  
  1570. RM5
  1571.  
  1572. C10
  1573.  
  1574.  
  1575.  
  1576. 2x
  1577.  
  1578. 470(F / 6V
  1579.  
  1580. RM5
  1581.  
  1582. C11
  1583.  
  1584.  
  1585.  
  1586. InduktivitΣten:
  1587.  
  1588. 1x
  1589.  
  1590. ZKB 5051/X005
  1591.  
  1592. ISDN-▄Tr.
  1593.  
  1594. TR1
  1595.  
  1596.  
  1597.  
  1598. 1x
  1599.  
  1600. 1000(H / 2A
  1601.  
  1602. RM10
  1603.  
  1604. L10
  1605.  
  1606.  
  1607.  
  1608. Sockel / Steckverbinder:
  1609.  
  1610. 1x
  1611.  
  1612. 44 pol.
  1613.  
  1614. PLCC
  1615.  
  1616. IC6
  1617.  
  1618.  
  1619.  
  1620. 1x
  1621.  
  1622. 40 pol.
  1623.  
  1624. DIL
  1625.  
  1626. IC1
  1627.  
  1628.  
  1629.  
  1630. 3x
  1631.  
  1632. 28 pol.
  1633.  
  1634. DIL
  1635.  
  1636. IC3, IC4, IC5
  1637.  
  1638.  
  1639.  
  1640. 2x
  1641.  
  1642. 20 pol.
  1643.  
  1644. DIL
  1645.  
  1646. IC2, IC7
  1647.  
  1648.  
  1649.  
  1650. 2x
  1651.  
  1652. 16 pol.
  1653.  
  1654. DIL
  1655.  
  1656. IC8, IC13
  1657.  
  1658.  
  1659.  
  1660. 3x
  1661.  
  1662. 14 pol.
  1663.  
  1664. DIL
  1665.  
  1666. IC9, IC10, IC11
  1667.  
  1668.  
  1669.  
  1670. 1x
  1671.  
  1672. 8 pol.
  1673.  
  1674. DIL
  1675.  
  1676. IC12
  1677.  
  1678.  
  1679.  
  1680. 1x
  1681.  
  1682. 2 x 7 Stecker
  1683.  
  1684. RM2,54
  1685.  
  1686. X1
  1687.  
  1688.  
  1689.  
  1690. 1x
  1691.  
  1692. 1 x 9 Stecker
  1693.  
  1694. RM2,54
  1695.  
  1696. X2
  1697.  
  1698.  
  1699.  
  1700. 1x
  1701.  
  1702. 1 x 7 Stecker
  1703.  
  1704. RM2,54
  1705.  
  1706. X12
  1707.  
  1708.  
  1709.  
  1710. 2x
  1711.  
  1712. 1 x 6 Stecker
  1713.  
  1714. RM2,54
  1715.  
  1716. X3, X11
  1717.  
  1718.  
  1719.  
  1720. 1x
  1721.  
  1722. 1 x 5 Jumper
  1723.  
  1724. RM2,54
  1725.  
  1726. JP1
  1727.  
  1728.  
  1729.  
  1730. 3x
  1731.  
  1732. 1 x 4 Stecker
  1733.  
  1734. RM2,54
  1735.  
  1736. X4, X5, X6
  1737.  
  1738.  
  1739.  
  1740. 1x
  1741.  
  1742. 1 x 3 Stecker
  1743.  
  1744. RM2,54
  1745.  
  1746. JP2
  1747.  
  1748.  
  1749.  
  1750. 1x
  1751.  
  1752. 1 x 2 Stecker
  1753.  
  1754. RM2,54
  1755.  
  1756. X7
  1757.  
  1758.  
  1759.  
  1760. 7.6.2 Stⁿckliste ISDN-DSP-Verschlⁿsselungsboard
  1761.  
  1762. Halbleiter:
  1763.  
  1764. 2x
  1765.  
  1766. TMS320C26B
  1767.  
  1768. PLCC44
  1769.  
  1770. IC1, IC2
  1771.  
  1772.  
  1773.  
  1774. 1x
  1775.  
  1776. Osc=40MHz
  1777.  
  1778. DIL14 / 4
  1779.  
  1780. IC3
  1781.  
  1782.  
  1783.  
  1784. 1x
  1785.  
  1786. 74HCT157
  1787.  
  1788. DIL16
  1789.  
  1790. IC4
  1791.  
  1792.  
  1793.  
  1794. 1x
  1795.  
  1796. 74HCT86
  1797.  
  1798. DIL14
  1799.  
  1800. IC5
  1801.  
  1802.  
  1803.  
  1804. WiderstΣnde:
  1805.  
  1806. 2x
  1807.  
  1808. 100(
  1809.  
  1810. RM7,5
  1811.  
  1812. R1, R2
  1813.  
  1814.  
  1815.  
  1816. 2x
  1817.  
  1818. 10k(
  1819.  
  1820. RM7,5
  1821.  
  1822. R3, R4
  1823.  
  1824.  
  1825.  
  1826. 2x
  1827.  
  1828. 6 x 10k(
  1829.  
  1830. SIL7
  1831.  
  1832. RN1, RN2
  1833.  
  1834.  
  1835.  
  1836. KapazitΣten:
  1837.  
  1838. 5x
  1839.  
  1840. 100nF
  1841.  
  1842. RM2,5
  1843.  
  1844. C1-C5
  1845.  
  1846.  
  1847.  
  1848. Sockel / Steckverbinder:
  1849.  
  1850. 2x
  1851.  
  1852. 68 pol
  1853.  
  1854. PLCC
  1855.  
  1856. IC1, IC2
  1857.  
  1858.  
  1859.  
  1860. 1x
  1861.  
  1862. 16 pol
  1863.  
  1864. DIL
  1865.  
  1866. IC4
  1867.  
  1868.  
  1869.  
  1870. 1x
  1871.  
  1872. 14 pol
  1873.  
  1874. DIL
  1875.  
  1876. IC5
  1877.  
  1878.  
  1879.  
  1880. 1x
  1881.  
  1882. 4 pol
  1883.  
  1884. DIL14 / 4
  1885.  
  1886. IC3
  1887.  
  1888.  
  1889.  
  1890. 2x
  1891.  
  1892. 2 pol
  1893.  
  1894. RM2,54
  1895.  
  1896. JP1, JP2
  1897.  
  1898.  
  1899.  
  1900. 1x
  1901.  
  1902. 1 x 7 Buchse
  1903.  
  1904. RM2,54
  1905.  
  1906. X2
  1907.  
  1908.  
  1909.  
  1910. 1x
  1911.  
  1912. 1 x 6 Buchse
  1913.  
  1914. RM2,54
  1915.  
  1916. X1
  1917.  
  1918.  
  1919.  
  1920. 7.6.3 Stⁿckliste der externen Bauteile
  1921.  
  1922. LC-Display 2x40 mit 14-poliger Verbindungsleitung
  1923.  
  1924. Matrix-Tastatur 4x4 / 5x4 mit 8/9-poliger Verbindungsleitung
  1925.  
  1926. Chipkarten-Schacht mit 6-poliger Verbindungsleitung
  1927.  
  1928. zwei Lautsprecher mit einer 4-poligen Verbindungsleitung
  1929.  
  1930. zwei Mikrofone mit einer 4-poliger Verbindungsleitung
  1931.  
  1932. Taster/Schalter mit 2-poliger Verbindungsleitung
  1933.  
  1934. 7.7 Inhalt der Daten-CD
  1935.  
  1936. DIPLOM(dir)            ; Dateien der Diplomarbeit
  1937.  
  1938.   DIPLOM.DOC            ; Die Diplomarbeit in WinWord6
  1939.  
  1940.   DECKBLAT.DOC        ; Deckblatt der Diplomarbeit in WinWord6
  1941.  
  1942.   ISDN_TEL.SCH        ; Stromlaufplan der Telefonplatine in Eagle3
  1943.  
  1944.   ISDN_DSP.SCH        ; Stromlaufplan der DSP-Platine in Eagle3
  1945.  
  1946.   ISDN_TEL.BRD        ; Layout der Telefonplatine in Eagle3
  1947.  
  1948.   ISDN_DSP.BRD        ; Layout der DSP-Platine in Eagle3
  1949.  
  1950.   ISDNTEL.ASM        ; Sourcecode fⁿr den Steuerprozessor
  1951.  
  1952.   IDEA_*.ASM            ; Sourcecode fⁿr die DSPs
  1953.  
  1954.  
  1955.  
  1956. DATASHET(dir)        ; DatenblΣtter der Halbleiter im PDF-AdobeAcrobatRead-Format
  1957.  
  1958.   T320C26.PDF            ; TMS320C2x    DSP            von TI
  1959.  
  1960.   80C320.PDF            ; DS80C320    51er CPU        von Dallas
  1961.  
  1962.   AM79C30A.PDF        ; AM79C30A    ISDN-Controller    von AMD
  1963.  
  1964.   27C512.PDF            ; 27C512    64kB EPROM
  1965.  
  1966.   62256.PDF            ; 62256        32kB RAM
  1967.  
  1968.   M48T08.PDF            ; M48T08    8kB NVRAM + RTC    von ST
  1969.  
  1970.   MM74C922.PDF        ; MM74C922/3    Tastertur-Controller    von NS
  1971.  
  1972.   LM2575HV.PDF        ; LM2575HVN    Schaltregler        von NS
  1973.  
  1974.   TL074.PDF            ; TL074        4fach OPV        von TI
  1975.  
  1976.   TDA7050.PDF        ; TDA7050    Lautsprecherverst.    von Philips
  1977.  
  1978.   74HCT573.PDF        ; 74HCT573    8bit Zwischenspeicher
  1979.  
  1980.   74HCT139.PDF        ; 74HCT139    2fach DeMultiplexer
  1981.  
  1982.   74HCT157.PDF        ; 74HCT157    4fach Multiplexer
  1983.  
  1984.   74HCT86.PDF        ; 74HCT86    4fach XOR
  1985.  
  1986.   74HCT00.PDF        ; 74HCT00    4fach NAND
  1987.  
  1988.   MBR160            ; MBR160    Diode            von Motorola
  1989.  
  1990.   HD447800.PDF        ; HD44700    LC-Display-Controller    von Hitachi
  1991.  
  1992.  
  1993.  
  1994. DOCUMENT(dir)        ; ITU-T Normen im WinWord-Format
  1995.  
  1996.   Q093*.DOC            ; ITU-T Normen ISDN D-Kanal Schicht 3
  1997.  
  1998.   Q092*.DOC            ; ITU-T Normen ISDN D-Kanal Schicht 2
  1999.  
  2000.   I043*.DOC            ; ITU-T Normen ISDN Schicht 1
  2001.  
  2002.   G0711.DOC            ; ITU-T Norm Codec 8 <-> 14 Bit Expansion
  2003.  
  2004.  
  2005.  
  2006. EXTRA(dir)
  2007.  
  2008.   IDEA.ASM            ; IDEA Algorithmus in i386er Assembler
  2009.  
  2010.   IDEA.C            ; IDEA Algorithmus in C
  2011.  
  2012.   IDEA.H            ; geh÷rt zu IDEA.C
  2013.  
  2014.  SERPROG.SCH        ; Stromlaufplan Chipkarten ProgrammiergerΣt in Eagle3
  2015.  
  2016.  SERPROG.BRD        ; Layout Chipkarten ProgrammiergerΣt in Eagle3
  2017.  
  2018.  
  2019.  
  2020. SOFTWARE(dir)
  2021.  
  2022.   EAGLE(dir)            ; Platinen Layout Programm EAGLE v3.02
  2023.  
  2024.   TMS320C2(dir)        ; Software fⁿr den DSP
  2025.  
  2026.   A51(dir)            ; Software fⁿr die 51er CPU
  2027.  
  2028.   ACROBAT(dir)        ; Anzeigeprogramm fⁿr *.PDF
  2029.  
  2030.   WORDVIEW(dir)        ; Anzeigeprogramm fⁿr *.DOC
  2031.  
  2032.   PGP(dir)
  2033.  
  2034.     PGP26*.ZIP            ; PGP ausfⁿhrbares Prgramm
  2035.  
  2036.     PGP26*S.ZIP        ; PGP Sourcecode
  2037.  
  2038.     PGP_GER.TXT        ; Deutsche Dokumentation zu PGP
  2039.  
  2040.  
  2041.  
  2042. Achtung! Einige Programme im Verzeichnis "Software"  sind urheberrechtlich geschⁿtzt. Diese Programme dⁿrfen nur kopiert und eingesetzt werden, wenn ein Lizenzvertrag fⁿr diese Programme vorliegt. Bitte beachten Sie die Lizenzbestimmungen der einzelnen Programme.
  2043.  
  2044. 7.8 
  2045.  
  2046. Literaturverzeichnis
  2047.  
  2048. [1]    "Applied Cryptography" second edition von Bruce Schneier
  2049.  
  2050.     beim Wiley-Verlag                    ISBN 0-471-11709-9
  2051.  
  2052. [2]    "Technik der Netze" 3.Auflage von Gerd Siegmund
  2053.  
  2054.     beim R.v.Deker-Verlag                ISBN 3-7685-2495-7
  2055.  
  2056. [3]    "Das Mikrocontroller Kochbuch" von Andreas Roth
  2057.  
  2058.     beim IWT-Verlag                    ISBN 3-88322-225-9
  2059.  
  2060. [4]    "Handbuch der Chipkarten" von Rankl / Effing
  2061.  
  2062.     beim Hanser-Verlag                ISBN 3-446-17993-3
  2063.  
  2064. [5]    PGP-Verschlⁿsselungssoftware(PGP v2.6.2i) von Philip Zimmermann *
  2065.  
  2066. [6]    Datenbuch "TMS320C2x" von Texas Instruments *
  2067.  
  2068. [7]    Datenbuch "AM79C30A" von AMD *
  2069.  
  2070.  
  2071.  
  2072. * mit auf der Daten-CD
  2073.  
  2074.  
  2075.  
  2076. 7.9 
  2077.  
  2078. DSP-Listing
  2079.  
  2080. data0            .SET    00600h            ; 4 x 16Bit fⁿr die 64Bit
  2081.  
  2082. data1            .SET    00601h            ; Daten (vom Klartext bis
  2083.  
  2084. data2            .SET    00602h            ; hin zum Ciffretext)
  2085.  
  2086. data3            .SET    00603h
  2087.  
  2088.  
  2089.  
  2090. data4            .SET    00604h            ; Zwischenergebniss innerhalb
  2091.  
  2092. data5            .SET    00605h            ; einer IDEA-Runde
  2093.  
  2094.  
  2095.  
  2096. temp            .SET    00606h            ; Temp fⁿr Multiplikation
  2097.  
  2098. ser_dat        .SET    00607h            ; Byte von seriellem Prot
  2099.  
  2100.  
  2101.  
  2102. key0            .SET    00608h            ; 8 x 16 Bit = 128Bit
  2103.  
  2104. key1            .SET    00609h            ; fⁿr den Schlⁿssel
  2105.  
  2106. key2            .SET    0060Ah
  2107.  
  2108. key3            .SET    0060Bh
  2109.  
  2110. key4            .SET    0060Ch
  2111.  
  2112. key5            .SET    0060Dh
  2113.  
  2114. key6            .SET    0060Eh
  2115.  
  2116. key7            .SET    0060Fh
  2117.  
  2118.  
  2119.  
  2120. e_key_begin        .SET    00610h            ; erster expandierter Schlⁿssel
  2121.  
  2122. e_key_end        .SET    00640h            ; letzter expandierter Schlⁿssel
  2123.  
  2124.  
  2125.  
  2126. shift0            .SET    00670h            ; 8 Speicherzellen fⁿr
  2127.  
  2128. shift1            .SET    00671h            ; das Schieberegister
  2129.  
  2130. shift2            .SET    00672h            ; Es werden nur 8Bit je
  2131.  
  2132. shift3            .SET    00673h            ; Speicherplatz verwendet
  2133.  
  2134. shift4            .SET    00674h
  2135.  
  2136. shift5            .SET    00675h
  2137.  
  2138. shift6            .SET    00676h
  2139.  
  2140. shift7            .SET    00677h
  2141.  
  2142.  
  2143.  
  2144. ; ---------------------------------------------------------------------------
  2145.  
  2146.  
  2147.  
  2148.             .DS    00608h            ; Bitmuster fⁿr Testschlⁿssel
  2149.  
  2150.                         ; !!!    ; hier muss der Schlⁿssel rein
  2151.  
  2152.  
  2153.  
  2154. init_test_key:    .WORD    00000h, 01111h, 02222h, 03333h
  2155.  
  2156.             .WORD    04444h, 05555h, 06666h, 07777h
  2157.  
  2158.  
  2159.  
  2160. ; ---------------------------------------------------------------------------
  2161.  
  2162.  
  2163.  
  2164.             .PS    0FA00h            ; Einsprungsadresse fⁿr
  2165.  
  2166.             .ENTRY                ; das Hauptprogramm
  2167.  
  2168. RESET:            B    start
  2169.  
  2170.  
  2171.  
  2172.             .PS    0FA0Ah            ; Einsprungsadresse fⁿr
  2173.  
  2174. B0RINT:        B    RINT            ; den seriellen Interrupt
  2175.  
  2176.  
  2177.  
  2178. ; ---------------------------------------------------------------------------
  2179.  
  2180.  
  2181.  
  2182.             .PS    0FB00h            ; Hauptprogramm
  2183.  
  2184.  
  2185.  
  2186. start:            SPM    0            ; Akku-Shift-Mode=0
  2187.  
  2188.             RSXM                ; Unsigned Mode
  2189.  
  2190.  
  2191.  
  2192.             FORT    1            ; Serialport initialisieren
  2193.  
  2194.             RTXM
  2195.  
  2196.             SFSM
  2197.  
  2198.  
  2199.  
  2200.             LDPK    0Ch            ; Setze Datenpointer auf $0600
  2201.  
  2202.  
  2203.  
  2204.             CALL    idea_key_exp, *, 7    ; IDEA-Key expandieren
  2205.  
  2206.  
  2207.  
  2208.             LDPK    00h            ; Interrupt freigeben
  2209.  
  2210.             LARP    00h
  2211.  
  2212.             LARK    AR0,0
  2213.  
  2214.             LACK    010h
  2215.  
  2216.             SACL    004h
  2217.  
  2218.             EINT
  2219.  
  2220.  
  2221.  
  2222. loop:            B    loop            ; Endlosschleife
  2223.  
  2224.  
  2225.  
  2226. ; ---------------------------------------------------------------------------
  2227.  
  2228.  
  2229.  
  2230. RINT:            LDPK    00h            ; Interrupt-Service-Routine
  2231.  
  2232.             SST1    060h
  2233.  
  2234.             LAC    000h            ; hole Byte aus dem Serialport
  2235.  
  2236.             LDPK    0Ch
  2237.  
  2238.  
  2239.  
  2240.             SACL    ser_dat        ; speicher Byte in "ser_dat"
  2241.  
  2242.  
  2243.  
  2244.             CALL    idea_cyk, *, 7    ; fⁿhre IDEA-Berechnung aus
  2245.  
  2246.  
  2247.  
  2248.             LAC    ser_dat
  2249.  
  2250.             XOR    data0        ; !!!    ; Verexclusivoderung des Datenbytes
  2251.  
  2252.             CALL    idea_shift, *, 7    ; vor oder nach dem Schieben
  2253.  
  2254.         ;    XOR    data0        ; !!!    ; ob ver- oder entschlⁿsseln
  2255.  
  2256.  
  2257.  
  2258.             LDPK    00h
  2259.  
  2260.             SACL    001h            ; schreibe Datenbyte auf Serialport
  2261.  
  2262.             LST1    060h
  2263.  
  2264.             EINT                ; Interrupt-Service-Routine
  2265.  
  2266.             RET                ; verlassen
  2267.  
  2268.  
  2269.  
  2270. ; ---------------------------------------------------------------------------
  2271.  
  2272.  
  2273.  
  2274. idea_key_exp:    LRLK    AR7,e_key_begin    ; IDEA-Schlⁿessel expandieren
  2275.  
  2276.             LRLK    AR0,e_key_end
  2277.  
  2278.  
  2279.  
  2280. idea_key_exp_3:    RPTK    007h            ; 8 Teilschlⁿssel herrauskopieren
  2281.  
  2282.             BLKD    key0, *+
  2283.  
  2284.  
  2285.  
  2286.             LARK    AR2, 018h        ; 128bitigen Schlⁿssel 25Bit nach
  2287.  
  2288.             LARP    2            ; links rotieren
  2289.  
  2290. idea_key_exp_2:    ZALH    key0            ; MSB aus key0 holen
  2291.  
  2292.             ROL
  2293.  
  2294.  
  2295.  
  2296.             ZALH    key6            ; key7 und key6 um 1 Bit nach
  2297.  
  2298.             OR    key7            ; links schieben
  2299.  
  2300.             ROL
  2301.  
  2302.             SACL    key7
  2303.  
  2304.             SACH    key6
  2305.  
  2306.  
  2307.  
  2308.             ZALH    key4            ; key5 und key4 um 1 Bit nach
  2309.  
  2310.             OR    key5            ; links schieben
  2311.  
  2312.             ROL
  2313.  
  2314.             SACL    key5
  2315.  
  2316.             SACH    key4
  2317.  
  2318.  
  2319.  
  2320.             ZALH    key2            ; key3 und key2 um 1 Bit nach
  2321.  
  2322.             OR    key3            ; links schieben
  2323.  
  2324.             ROL
  2325.  
  2326.             SACL    key3
  2327.  
  2328.             SACH    key2
  2329.  
  2330.  
  2331.  
  2332.             ZALH    key0            ; key1 und key0 um 1 Bit nach
  2333.  
  2334.             OR    key1            ; links schieben
  2335.  
  2336.             ROL
  2337.  
  2338.             SACL    key1
  2339.  
  2340.             SACH    key0
  2341.  
  2342.  
  2343.  
  2344.             BANZ    idea_key_exp_2, *-
  2345.  
  2346.  
  2347.  
  2348.             LARP    7            ; Test, ob alle Teilschlⁿssel
  2349.  
  2350.             CMPR    02            ; expandiert worden sind
  2351.  
  2352.             BBZ    idea_key_exp_3
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.             LRLK    AR7,e_key_begin    ; jeden Teilschlⁿssel mit
  2359.  
  2360.             LRLK    AR0,e_key_end    ; $0DEA verexclusivodern
  2361.  
  2362.  
  2363.  
  2364. idea_key_exp_1:    LAC    *
  2365.  
  2366.             XORK    00DEAh
  2367.  
  2368.             SACL    *+
  2369.  
  2370.  
  2371.  
  2372.             CMPR    02
  2373.  
  2374.             BBZ    idea_key_exp_1
  2375.  
  2376.  
  2377.  
  2378.             RET
  2379.  
  2380.  
  2381.  
  2382. ; ---------------------------------------------------------------------------
  2383.  
  2384.  
  2385.  
  2386. idea_shift:        ANDK    000ffh            ; Byte in das Schieberegister laden
  2387.  
  2388.  
  2389.  
  2390.             LRLK    AR7, 00676h
  2391.  
  2392.             RPTK    006h
  2393.  
  2394.             DMOV    *-
  2395.  
  2396.             SACL    shift0
  2397.  
  2398.  
  2399.  
  2400.             RET
  2401.  
  2402.  
  2403.  
  2404. ; ---------------------------------------------------------------------------
  2405.  
  2406.  
  2407.  
  2408. idea_cyk:        LT    shift7            ; Inhalt des Schieberegisters
  2409.  
  2410.             MPYK    00100h            ; fⁿr den IDEA-Algorithmus auslesen
  2411.  
  2412.             PAC
  2413.  
  2414.             OR    shift6
  2415.  
  2416.             SACL    data3
  2417.  
  2418.  
  2419.  
  2420.             LT    shift5
  2421.  
  2422.             MPYK    00100h
  2423.  
  2424.             PAC
  2425.  
  2426.             OR    shift4
  2427.  
  2428.             SACL    data2
  2429.  
  2430.  
  2431.  
  2432.             LT    shift3
  2433.  
  2434.             MPYK    00100h
  2435.  
  2436.             PAC
  2437.  
  2438.             OR    shift2
  2439.  
  2440.             SACL    data1
  2441.  
  2442.  
  2443.  
  2444.             LT    shift1
  2445.  
  2446.             MPYK    00100h
  2447.  
  2448.             PAC
  2449.  
  2450.             OR    shift0
  2451.  
  2452.             SACL    data0
  2453.  
  2454.  
  2455.  
  2456. ; ---------------------------------------------------------------------------
  2457.  
  2458.  
  2459.  
  2460. idea_start:        LRLK    AR7,e_key_begin    ; Der IDEA-Algorithmus
  2461.  
  2462.             LRLK    AR0,e_key_end
  2463.  
  2464.  
  2465.  
  2466. idea_loop:        LAC    *            ; IDEA-Multiplikation
  2467.  
  2468.             BZ    idea_00
  2469.  
  2470.             LAC    data0
  2471.  
  2472.             BZ    idea_01
  2473.  
  2474.             LT    data0
  2475.  
  2476.             MPYU    *+
  2477.  
  2478.             PAC
  2479.  
  2480.             SPH    temp
  2481.  
  2482.             SUBH    temp
  2483.  
  2484.             SUB    temp
  2485.  
  2486.             BNC    idea_02
  2487.  
  2488.             B    idea_03
  2489.  
  2490. idea_00:        LAC    data0
  2491.  
  2492.             B    idea_04, *+
  2493.  
  2494. idea_01:        LAC    *+
  2495.  
  2496. idea_04:        NEG
  2497.  
  2498. idea_02:        ADDK    001h
  2499.  
  2500. idea_03:        SACL    data0
  2501.  
  2502.  
  2503.  
  2504.             LAC    data1            ; 16bit Addition
  2505.  
  2506.             ADD    *+
  2507.  
  2508.             SACL    data1
  2509.  
  2510.  
  2511.  
  2512.             LAC    data2            ; 16bit Addition
  2513.  
  2514.             ADD    *+
  2515.  
  2516.             SACL    data2
  2517.  
  2518.  
  2519.  
  2520.             LAC    *            ; IDEA-Multiplikation
  2521.  
  2522.             BZ    idea_10
  2523.  
  2524.             LAC    data3
  2525.  
  2526.             BZ    idea_11
  2527.  
  2528.             LT    data3
  2529.  
  2530.             MPYU    *+
  2531.  
  2532.             PAC
  2533.  
  2534.             SPH    temp
  2535.  
  2536.             SUBH    temp
  2537.  
  2538.             SUB    temp
  2539.  
  2540.             BNC    idea_12
  2541.  
  2542.             B    idea_13
  2543.  
  2544. idea_10:        LAC    data3
  2545.  
  2546.             B    idea_14, *+
  2547.  
  2548. idea_11:        LAC    *+
  2549.  
  2550. idea_14:        NEG
  2551.  
  2552. idea_12:        ADDK    001h
  2553.  
  2554. idea_13:        SACL    data3
  2555.  
  2556.  
  2557.  
  2558.             LAC    data0            ; XOR
  2559.  
  2560.             XOR    data2
  2561.  
  2562.             SACL    data4
  2563.  
  2564.  
  2565.  
  2566.             LAC    data1            ; XOR
  2567.  
  2568.             XOR    data3
  2569.  
  2570.             SACL    data5
  2571.  
  2572.  
  2573.  
  2574.             LAC    *            ; IDEA-Multiplikation
  2575.  
  2576.             BZ    idea_20
  2577.  
  2578.             LAC    data4
  2579.  
  2580.             BZ    idea_21
  2581.  
  2582.             LT    data4
  2583.  
  2584.             MPYU    *+
  2585.  
  2586.             PAC
  2587.  
  2588.             SPH    temp
  2589.  
  2590.             SUBH    temp
  2591.  
  2592.             SUB    temp
  2593.  
  2594.             BNC    idea_22
  2595.  
  2596.             B    idea_23
  2597.  
  2598. idea_20:        LAC    data4
  2599.  
  2600.             B    idea_24, *+
  2601.  
  2602. idea_21:        LAC    *+
  2603.  
  2604. idea_24:        NEG
  2605.  
  2606. idea_22:        ADDK    001h
  2607.  
  2608. idea_23:        SACL    data4
  2609.  
  2610.  
  2611.  
  2612.             ADD    data5            ; 16bit Addition
  2613.  
  2614.             SACL    data5
  2615.  
  2616.  
  2617.  
  2618.             LAC    *            ; IDEA-Multiplikation
  2619.  
  2620.             BZ    idea_30
  2621.  
  2622.             LAC    data5
  2623.  
  2624.             BZ    idea_31
  2625.  
  2626.             LT    data5
  2627.  
  2628.             MPYU    *+
  2629.  
  2630.             PAC
  2631.  
  2632.             SPH    temp
  2633.  
  2634.             SUBH    temp
  2635.  
  2636.             SUB    temp
  2637.  
  2638.             BNC    idea_32
  2639.  
  2640.             B    idea_33
  2641.  
  2642. idea_30:        LAC    data5
  2643.  
  2644.             B    idea_34, *+
  2645.  
  2646. idea_31:        LAC    *+
  2647.  
  2648. idea_34:        NEG
  2649.  
  2650. idea_32:        ADDK    001h
  2651.  
  2652. idea_33:        SACL    data5
  2653.  
  2654.  
  2655.  
  2656.             ADD    data4            ; 16bit Addition
  2657.  
  2658.             SACL    data4
  2659.  
  2660.  
  2661.  
  2662.             LAC    data0            ; XOR
  2663.  
  2664.             XOR    data5
  2665.  
  2666.             SACL    data0
  2667.  
  2668.  
  2669.  
  2670.             LAC    data1            ; XOR
  2671.  
  2672.             XOR    data4
  2673.  
  2674.             SACL    data1
  2675.  
  2676.  
  2677.  
  2678.             LAC    data2            ; XOR
  2679.  
  2680.             XOR    data5
  2681.  
  2682.             SACL    data2
  2683.  
  2684.  
  2685.  
  2686.             LAC    data3            ; XOR
  2687.  
  2688.             XOR    data4
  2689.  
  2690.             SACL    data3
  2691.  
  2692.  
  2693.  
  2694.             LAC    data2            ; die mittleren beiden 16 Bit Daten
  2695.  
  2696.             DMOV    data1            ; vertauschen
  2697.  
  2698.             SACL    data1
  2699.  
  2700.  
  2701.  
  2702.             CMPR    1            ; Test auf 8 DurchgΣnge
  2703.  
  2704.             BBNZ    idea_loop
  2705.  
  2706.  
  2707.  
  2708.             LAC    data2            ; Vertauschung fⁿr die letzte halbe
  2709.  
  2710.             DMOV    data1            ; Runde rⁿckgΣngig machen
  2711.  
  2712.             SACL    data1
  2713.  
  2714.  
  2715.  
  2716.             LAC    *            ; IDEA-Multiplikation
  2717.  
  2718.             BZ    idea_40
  2719.  
  2720.             LAC    data0
  2721.  
  2722.             BZ    idea_41
  2723.  
  2724.             LT    data0
  2725.  
  2726.             MPYU    *+
  2727.  
  2728.             PAC
  2729.  
  2730.             SPH    temp
  2731.  
  2732.             SUBH    temp
  2733.  
  2734.             SUB    temp
  2735.  
  2736.             BNC    idea_42
  2737.  
  2738.             B    idea_43
  2739.  
  2740. idea_40:        LAC    data0
  2741.  
  2742.             B    idea_44, *+
  2743.  
  2744. idea_41:        LAC    *+
  2745.  
  2746. idea_44:        NEG
  2747.  
  2748. idea_42:        ADDK    001h
  2749.  
  2750. idea_43:        SACL    data0
  2751.  
  2752.  
  2753.  
  2754.             LAC    data1            ; 16bit Addition
  2755.  
  2756.             ADD    *+
  2757.  
  2758.             SACL    data1
  2759.  
  2760.  
  2761.  
  2762.             LAC    data2            ; 16bit Addition
  2763.  
  2764.             ADD    *+
  2765.  
  2766.             SACL    data2
  2767.  
  2768.  
  2769.  
  2770.             LAC    *            ; IDEA-Multiplikation
  2771.  
  2772.             BZ    idea_50
  2773.  
  2774.             LAC    data3
  2775.  
  2776.             BZ    idea_51
  2777.  
  2778.             LT    data3
  2779.  
  2780.             MPYU    *+
  2781.  
  2782.             PAC
  2783.  
  2784.             SPH    temp
  2785.  
  2786.             SUBH    temp
  2787.  
  2788.             SUB    temp
  2789.  
  2790.             BNC    idea_52
  2791.  
  2792.             B    idea_53
  2793.  
  2794. idea_50:        LAC    data3
  2795.  
  2796.             B    idea_54, *+
  2797.  
  2798. idea_51:        LAC    *+
  2799.  
  2800. idea_54:        NEG
  2801.  
  2802. idea_52:        ADDK    001h
  2803.  
  2804. idea_53:        SACL    data3
  2805.  
  2806.  
  2807.  
  2808.             RET
  2809.  
  2810.  
  2811.  
  2812. ; ---------------------------------------------------------------------------
  2813.  
  2814.  
  2815.  
  2816.  
  2817.  
  2818. 7.10 StromlaufplΣne
  2819.  
  2820. 7.11 
  2821.  
  2822.  
  2823.  
  2824.  
  2825.  
  2826.  
  2827.  
  2828. BestⁿckungsplΣne
  2829.  
  2830. 7.12 
  2831.  
  2832.  
  2833.  
  2834.  
  2835.  
  2836. Layouts
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.  
  2843.  
  2844.         Seite 27 / 1
  2845.  
  2846.  
  2847.  
  2848.